谁能给我个线程互斥问题的代码例子?研究一下哈~~
最好linux的
最好linux的
解决方案 »
- 关于CWebbrower类的navigate函数的一些问题
- Picture控件使用出错,error C2582: 'CStatic' : 'operator =' function is unavailable
- 语音处理
- 继续坚持下去是否有意义?
- vs2005中 atl项目和atl server项目有什么区别?
- 关于COM的一点问题
- 请问各位是怎么学VC的?大家来讨论一下吧
- 急!数据库中的字段比较长在打印过程中任何解决换行?
- 询问修改菜单栏的背景的方法?
- 新年新选择,给西安的程序员朋友一个新的选择
- 怎么样使Dialog中地两个Edit Box地ScrollBar同步滚动?
- Unicode字符转ANSI问题
EnterCriticalSection();
//要互斥的代码
LeaveCriticalSection();
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>int g_var;//initialize the mutex
pthread_mutex_t locker=PTHREAD_MUTEX_INITIALIZER;void *thread_function(void)
{ int i,j;
for (i=0;i<4;i++) {
pthread_mutex_lock(&locker);
j=g_var;
j=j+1;
printf("---in thread...increase one---\n");
fflush(stdout);
sleep(1);
g_var=j;
pthread_mutex_unlock(&locker);
}
return NULL;
}int main(void) {
pthread_t thread_id;
int i;
if (pthread_create(&thread_id,NULL,thread_function,NULL)) {
perror("cannot create new thread");
return 1;
}
for (i=0;i<4;i++){
pthread_mutex_lock(&locker);
g_var=g_var+1;
pthread_mutex_unlock(&locker);
printf("...in main thread...increase one...\n");
fflush(stdout);
sleep(1);
}
if (pthread_join (thread_id,NULL)){
perror("cannot join thread.");
return 1;
}
printf("g_var: %d\n",g_var);
exit(0);
}
//要互斥的代码
LeaveCriticalSection();
这个最好用。
看过没有搞过