Linux多线程编程之线程互斥锁
来源:互联网 发布:网络没问题起凡打不开 编辑:程序博客网 时间:2024/05/20 18:49
#include <stdio.h>#include <pthread.h>#include <semaphore.h>#include <stdlib.h>//Linux多线程编程之线程互斥锁//保证共享数据操作的完整性。/*互斥锁:线程将互斥。互斥锁变量//初始化互斥锁int pthread_mutex_init(pthread_mutex_t *mutex, const pthread_mutex‐ attr_t *mutexattr);参数1:互斥锁变量,默认快速互斥锁 PTHREAD_MUTEX_INITIALIZER;参数2:互斥锁属性 一般NULL//加锁:阻塞函数int pthread_mutex_lock(pthread_mutex_t *mutex);//非阻塞加锁:int pthread_mutex_trylock(pthread_mutex_t *mutex);//解锁int pthread_mutex_unlock(pthread_mutex_t *mutex);//销毁互斥锁int pthread_mutex_destroy(pthread_mutex_t *mutex);*/static int val =100;//快速互斥锁:pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;//读线程执行函数void *pthread_read(void *arg){ printf("pthrea 1 run...\n"); int i =2; while(1){ //加锁 pthread_mutex_lock(&mutex); printf("thread read val =%d\n",val); if(val ==105){ pthread_mutex_unlock(&mutex); break; } //解锁 pthread_mutex_unlock(&mutex); sleep(2); } pthread_exit(NULL); return NULL;}//写线程执行函数void *pthread_write(void *arg){ printf("pthread write run..\n"); while(1){ //加锁 pthread_mutex_lock(&mutex); val++; printf("pthread write val =%d\n",val); if(val ==105){ printf("write exit\n"); pthread_mutex_unlock(&mutex); break; } //解锁 pthread_mutex_unlock(&mutex); sleep(1); } pthread_exit(NULL); return NULL;}int main(void){ printf("main thread tid = 0x%x\n",pthread_self()); //初始化互斥锁 pthread_mutex_init(&mutex,NULL); //创建写线程 pthread_t tid2; pthread_create(&tid2,NULL,pthread_write,NULL); //创建读线程 pthread_t tid1; pthread_create(&tid1,NULL,pthread_read,NULL); //阻塞等待子线程结束,回收子线程结束8kb物理内存 pthread_join(tid1,NULL); pthread_join(tid2,NULL); printf("child pthread exit\n");// sleep(8); printf("main pthread exit\n"); pthread_exit(NULL); //结束主线程 return 0;}/*$ ./a.outmain thread tid = 0xb758c6c0pthrea 1 run...thread read val =100pthread write run..pthread write val =101pthread write val =102thread read val =102pthread write val =103pthread write val =104thread read val =104pthread write val =105write exitthread read val =105child pthread exitmain pthread exit*/
阅读全文
0 0
- linux多线程编程---线程同步之互斥锁
- Linux多线程编程之线程互斥锁
- Linux多线程编程之线程结合互斥锁实现同步
- Linux多线程编程之线程控制
- Linux入门:多线程编程之线程控制
- Linux多线程编程之线程属性设置
- Linux多线程编程之线程同步操作
- Linux多线程编程之同步对象编程:线程信号量
- linux多线程编程之互斥锁
- Linux多线程编程:对象同步之线程信号管理
- Linux线程编程 - 多线程异步管理之信号
- Linux多线程编程(二)线程同步之条件变量
- Linux多线程编程(三)线程同步之互斥量
- Linux多线程编程(四)线程同步之信号量
- Linux多线程编程之线程之间的参数传递
- Linux 多线程编程 线程属性
- 多线程编程之线程取消
- 多线程编程之线程通信
- 浮点处理器的威力
- flex 图表ColumnChart能够点击数据获得该数据x轴,与y轴坐标
- AS不能创建安卓工程问题
- 操纵文件类
- Java_Map常见方法
- Linux多线程编程之线程互斥锁
- 异常处理
- 清华大学视频课件:基于Linux的C++(自主模式)
- 数组(基本)
- mysql定时任务
- USB HID类设备开发中用CreateFile无法得到设备句柄,读访问失败
- Linux多线程编程之线程结合互斥锁实现同步
- centos安装更新Python2.7以及pip的安装
- 字典(基本)