Linux下C编程:线程互斥实例

/*编译时注意,要手动连接库*/
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>       

static int value = 0;
pthread_mutex_t mutex;       

void func(void* args)
{
    while(1)
    {
        pthread_mutex_lock(&mutex);
        sleep(1);
        value ++;
        printf("value = %d!\n", value);
        pthread_mutex_unlock(&mutex);
    }
}       

int main()
{
    pthread_t pid1, pid2;
    pthread_mutex_init(&mutex,NULL);         

    if(pthread_create(&pid2,NULL,&func,NULL))
    {
        return -1;
    }       

    if(pthread_create(&pid1,NULL,&func,NULL))
    {
        return -1;
    }
    while(1)
        sleep(0);       

    return 0;
}

编译时要手动连接库:详细说明见:http://blog.csdn.net/muge0913/article/details/7340126

查看全套文章:http://www.bianceng.cn/Programming/C/201212/34807.htm

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索编译
, include
, return
, null
, value
, mutex
linux多线程互斥
,以便于您获取更多的相关知识。

时间: 2024-12-08 07:06:14

Linux下C编程:线程互斥实例的相关文章

Linux下C编程:socket实例

客户端: #include <stdio.h> #include <sys/socket.h> #include <unistd.h> #include <sys/types.h> #include <netinet/in.h> #include <stdlib.h> #define SERVER_PORT 20000 // define the defualt connect port id #define CLIENT_PORT

Linux下多线程编程(C语言)

Linux下多线程编程(C语言) 2.6内核开始使用NPTL(Native POSIX Thread Library)线程库,这个线程库有以下几个目标: POSIX兼容,都处理结果和应用,底启动开销,低链接开销,与Linux Thread应用的二进制兼容,软硬件的可扩展能力,与C++集成等. 这里的线程是指用户空间的线程操作 一.线程相关操作 1.1  pthread_t      pthread_t 在头文件  /usr/include/i386-linux-gnu/bits/pthreadt

linux下串口编程read函数返回(非超时返回)问题

问题描述 linux下串口编程read函数返回(非超时返回)问题 串口编程经典应用场景:打开串口,阻塞模式,非超时返回,有数据返回,无数据死等. 简易代码为例: void* read_thread(void* param) { char szbuf[128]; int size = 0; while (running) { size = read(fd, szbuf, sizeof(szbuf)); } return 0; } int main() { fd = open(port, O_RDW

Linux下多进程编程(C语言)

Linux下多进程编程(C语言) 一.    进程简介 1.进程是程序的执行.程序是静态的,进程是动态的. 2.进程在内存中有三部分组成:数据段.堆栈段和代码段.          代码段:就是存放程序代码的数据,如果有数个进程运行同一个一个程序,那么它们就可以使用同一个代码段(代码段是可以共享的):          堆栈段:存放的是子程序的返回地址.参数以及程序的局部变量,主要是保存进程的执行的环境,这里用到了栈先进后出的特性,可以看做具有记忆上一次执行的环境.          数据段:存

Linux下c++编程中,STL模板的使用。

问题描述 Linux下c++编程中,STL模板的使用. Linux下c++编程,使用STL模板,为什么只识别#include 而不识别#include ? 程序中只要有#include 就会报无数多个错! 解决方案 难道c++标准模板库STL中没有包含queue,你可以去根目录去看看include头文件中有没有queue.h 解决方案二: STL头文件目录是否被include进项目中,如果自己写makefile的话,查看下INCLUDE的目录,如果IDE的话就查看下项目设置中的include选项

求程序,linux下两个线程访问同一个全局变量,得出不同结果!

问题描述 求程序,linux下两个线程访问同一个全局变量,得出不同结果! 10C 最简单的就行,比如全局变量n=10,第一个线程输出11,第二个线程输出12.就行. 解决方案 http://bbs.chinaunix.net/thread-3773950-1-1.html 解决方案二: 定义一个全局变量,然后再线程里自增一下打印输出 解决方案三: 不同的线程 访问全局变量对变量进行不同的操作之后使用 解决方案四: 不同的线程在run()中使用的时候处理下然后再使用即可!

多线程-linux下,子线程如何通过pthread_kill向主线程发送信号?

问题描述 linux下,子线程如何通过pthread_kill向主线程发送信号? //如下代码 #include <stdio.h> #include <signal.h> #include <pthread.h> void signal_deal(int sig); void* fun(); pthread_t pt_main; int main(int argc, char* argv[]) { pthread_t pt; //pt_main = getpid();

Linux下网络编程read,write问题(C语言),求大神指点阿!!!

问题描述 Linux下网络编程read,write问题(C语言),求大神指点阿!!! zuijzuj.最近学习socket编程的时候调试代码出现了一些问题,求大神们指导阿!!!我要实现的功能是客户端输入两个操作数和一个运算符,在服务端进行运算再把结果返回到客户端.现在的bug是客户端输入第一个操作数的时候没问题,输入运算符的时候客户端可以通过write函数写入但是服务端读出的结果不是输入的运算符,客户端输入第二个操作数的时候write函数无法写入,这是缓冲区满了吗?缓冲区大小不是由内核自己决定的

Linux下Shell编程快捷键大全(日常整理)_linux shell

有时候,我们需要在 Bash 中重复执行先前的命令.你当然可以使用上方向键来查看之前曾经运行过的命令.但这里有一些更好的方式,例如,数量掌握以下的快捷键. 1) !!:重复执行上一条指令 2) !a:重复执行上一条以a为首的指令 3) !number:重复执行上一条在history表中记录号码为number的指令 4) !-number:重复执行前第number条指令 5) !$:表示获得上一条命令中的最后一项内容 6) 用Ctrl + r 组合键来进入历史搜索模式在history表中查询某条过

Linux下C编程:底层终端编程实例

Linux 系统的终端处理是一个非常大的系统,需要处理许多不同类型的设备和需求.涉及的内容包括:调制解调器.终端仿真.伪终端等. Linux 系统处理终端的方法是通过串行接口连接的控制台与系统通信并运行程序.由于越来越多的厂商都参与到终端的生产,而且每个厂商都为自己的终端设计自己的命令集,所以需要有一种方法对终端的访问进行一般化处理.Linux 系统使用一个能力数据库terminfo来描述每个终端的能力以及调用这些功能的方法. 在某些情况下,程序员希望能够对某些并不是终端的设备提供终端驱动程序功