linux 线程编程:互斥锁创建
来源:互联网 发布:兔先森质量 知乎 编辑:程序博客网 时间:2024/06/05 16:16
今天写一下线程互斥锁的基本用法。
相关函数
#include <pthread.h>
int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutexattr_t *mutexattr);
int pthread_mutex_lock(pthread_mutex_t *mutex);
int pthread_mutex_unlock(pthread_mutex_t *mutex);
int pthread_mutex_trylock(pthread_mutex_t *mutex);
int pthread_mutex_destroy(pthread_mutex_t *mutex);
测试代码
#include <stdio.h>#include <string.h>#include <pthread.h>typedef struct pthread_mutex_test{pthread_mutex_t mutex;unsigned char value;}pthread_mutex_test_t;pthread_mutex_test_t test;void *pfunc_1(void *arg);void *pfunc_2(void *arg);int main(int argc, char **argv){int ret = -1;pthread_t tid_1;pthread_t tid_2;memset(&test, 0, sizeof(test));pthread_mutex_init(&test.mutex, NULL);//初始化互斥锁(test.mutex = PTHREAD_MUTEX_INITIALIZER)ret = pthread_create(&tid_1, NULL, pfunc_1, NULL);if(0 != ret){printf("[%s:%d] pthread_1 create fail\n", __func__, __LINE__);}ret = pthread_create(&tid_2, NULL, pfunc_2, NULL);if(0 != ret){printf("[%s:%d] pthread_2 create fail\n", __func__, __LINE__);}pthread_join(tid_1, NULL);pthread_join(tid_2, NULL);pthread_mutex_destroy(&test.mutex);//注销互斥锁.return 0;}void *pfunc_1(void *arg){int i;for(i=0; i<4; i++){pthread_mutex_lock(&test.mutex);test.value = i;sleep(1);printf("[%s:%d] pthread_1 value:%d\n", __func__, __LINE__, test.value);pthread_mutex_unlock(&test.mutex);}pthread_exit(NULL);}void *pfunc_2(void *arg){int i;for(i=4; i<8; i++){pthread_mutex_lock(&test.mutex);test.value = i;sleep(1);printf("[%s:%d] pthread_2 value:%d\n", __func__, __LINE__, test.value);pthread_mutex_unlock(&test.mutex);}pthread_exit(NULL);}运行结果
加锁
[pfunc_2:70] pthread_2 value:4
[pfunc_2:70] pthread_2 value:5
[pfunc_2:70] pthread_2 value:6
[pfunc_2:70] pthread_2 value:7
[pfunc_1:55] pthread_1 value:0
[pfunc_1:55] pthread_1 value:1
[pfunc_1:55] pthread_1 value:2
[pfunc_1:55] pthread_1 value:3
不加锁
[pfunc_1:55] pthread_1 value:0
[pfunc_2:70] pthread_2 value:0
[pfunc_2:70] pthread_2 value:5
[pfunc_1:55] pthread_1 value:5
[pfunc_1:55] pthread_1 value:2
[pfunc_2:70] pthread_2 value:3
[pfunc_1:55] pthread_1 value:7
[pfunc_2:70] pthread_2 value:7
- linux 线程编程:互斥锁创建
- linux 线程编程:线程创建
- Linux线程编程 - 线程概念及创建线程
- Linux编程练习 --多线程1--线程创建
- linux多线程编程1--线程的创建
- Linux编程练习 --多线程1--线程创建
- linux多线程编程1--线程的创建
- Linux编程练习 --多线程1--线程创建
- Linux多线程编程(创建线程)
- Linux多线程编程(创建线程)
- linux编程---线程---互斥锁
- linux 学习- 编程基础之多线程编程(创建多线程)
- Linux多线程编程-线程的创建和终止
- Linux下的多线程编程(一) 创建线程
- Linux多线程编程(一)——线程创建
- 【原创】《Linux高级程序设计》杨宗德著 - Linux多线程编程 - 线程概念及创建线程
- Linux线程-创建
- linux 下创建线程
- 运行ase的sybase central 时提示错误unable to load language dll 'scsslgzh',怎么解决这个问题,
- 第十二周项目四(3):点、圆的关系
- Cordys 使用Oracle同义词解决方案
- 反射Reflect
- 从相册或拍照选择图片并剪切
- linux 线程编程:互斥锁创建
- qt 与MySQL
- C++ sting字符串函数详解
- Python学习第一篇之python 连接字符串和数字
- WebView和js交互
- Codevs3657括号序列题解
- 第37讲-项目四-大奖赛计分
- Flex4.6+blazeDS+MyEclipse10+SQLSERVER项目环境搭建
- UIScrollView 之 EXC_BAD_ACCESS