linux线程同步
来源:互联网 发布:企业数据安全管理 编辑:程序博客网 时间:2024/06/11 14:07
首先介绍几个linux线程同步需要的函数:
pthread_mutex_lock();
pthread_mutex_unlock();
pthread_cond_wait();
pthread_cond_signal();
下面使用一个例子介绍上面几个函数的用法。在主线程接受用户输入信息,在子线程中输入用户输入的信息。
#include <stdio.h>#include <pthread.h>#include <unistd.h>pthread_mutex_t mutex=PTHREAD_MUTEX_INITIALIZER;pthread_cond_t cond =PTHREAD_COND_INITIALIZER;pthread_t pid;int flag = 0;char buf[1024];void *print(void* arg){ while(1) { pthread_mutex_lock(&mutex); if (flag == 1) { printf("%s\n",buf); flag = 0; } pthread_cond_signal(&cond); pthread_mutex_unlock(&mutex); }}int main(){ pthread_create(&pid,NULL,print,NULL); while(1) { pthread_mutex_lock(&mutex); printf("input->:"); scanf("%s",buf); flag = 1; pthread_cond_wait(&cond,&mutex); pthread_mutex_unlock(&mutex); }}
编译方法:
# gcc -lpthread test.c
pthread_mutex_lock这个函数是获取互斥量。在这个线程没有执行pthread_mutex_unlock时,那么其他线程执行pthread_mutex_lock就会被阻塞。
pthread_cond_wait这个函数是将当前线程阻塞,并且释放互斥量。
pthread_mutex_signal函数是通知调用了pthread_cond_wait的函数,让它脱离阻塞,并且调用了pthread_cond_wait的线程将会重新获取互斥锁。
0 0
- linux 线程 线程同步
- linux 线程同步
- Linux中的线程同步
- Linux线程同步
- Linux 下线程同步
- Linux线程同步
- Linux线程同步
- Linux线程同步
- linux线程同步机制
- Linux 线程同步
- linux线程同步
- Linux线程及同步
- linux下线程同步
- linux 线程同步
- linux线程同步问题
- Linux多线程,线程同步
- linux线程同步浅析
- linux线程同步
- 找出字符串中第一个出现次数最多的字符
- BZOJ2134
- ExpandableListView(一)替换系统默认的箭头
- 只输出匹配的模式--正则表达式的一个应用
- poj2485
- linux线程同步
- oj继承与组合
- 算法基础第一篇:选择算法
- 处理URL传递中文乱码问题
- 在SQL Server Management Studio中使用手动提交更改
- awk来调用linux命令解决个日志采集问题
- Cocos2d-x学习笔记(7)
- 关于ext touch的安装与打包
- 03_02.块元素与内联元素