/*threadrace.c*/
#include #include #include #include int myglobal;
pthread_mutex_t work_mutex = pthread_mutex_initializer //定義互斥量
//初始化互斥量
pthread_mutex_init(&work_mutex, null);
void *
thread_function (void *arg)
return null;
}int
main (void)
sleep(10);
for (i = 0; i < 10; i++)
if (pthread_join (mythread, null))
printf ("\nmyglobal equals %d\n", myglobal);
exit (0);
}
例子2:
#include #include #include #include #include #include void * thread_function(void * arg);
pthread_mutex_t work_mutex;
#define work_size 1024
char work_area[work_size];
int time_to_exit = 0;
int main(int argc, char const *argv)
res = pthread_create(&pthread,null,thread_function,null);
if (res != 0)
pthread_mutex_lock(&work_mutex);//
printf("input a text. enter end to finish!\n");
while(!time_to_exit)
else
break;
} }pthread_mutex_unlock(&work_mutex);
// printf("\nwaiting...");
res = pthread_join(pthread,&thread_result);
if (res != 0)
printf("son thread exit success!\n");
pthread_mutex_destroy(&work_mutex);
exit(exit_success);
}
void * thread_function(void * arg)
time_to_exit = 1;
work_area[0] = '\0';
pthread_mutex_unlock(&work_mutex);
pthread_exit(null);
}
臨界資源是work_area中的內容。
Linux多執行緒 使用互斥量同步執行緒
原部落格 linux多執行緒 使用訊號量同步執行緒 只有子執行緒結束了對輸入的處理和統計後,主線程才能繼續執行的問題。一 什麼是互斥量 互斥量是另一種用於多執行緒中的同步訪問方法,它允許程式鎖住某個物件,使得每次只能有乙個執行緒訪問它。為了控制對關鍵 的訪問,必須在進入這段 之前鎖住乙個互斥量,然後...
Linux多執行緒 使用互斥量同步執行緒
linux多執行緒 使用訊號量同步執行緒 只有子執行緒結束了對輸入的處理和統計後,主線程才能繼續執行的問題。一 什麼是互斥量 互斥量是另一種用於多執行緒中的同步訪問方法,它允許程式鎖住某個物件,使得每次只能有乙個執行緒訪問它。為了控制對關鍵 的訪問,必須在進入這段 之前鎖住乙個互斥量,然後在完成操作...
Linux多執行緒 使用互斥量同步執行緒
linux多執行緒 使用訊號量同步執行緒 只有子執行緒結束了對輸入的處理和統計後,主線程才能繼續執行的問題。一 什麼是互斥量 互斥量是另一種用於多執行緒中的同步訪問方法,它允許程式鎖住某個物件,使得每次只能有乙個執行緒訪問它。為了控制對關鍵 的訪問,必須在進入這段 之前鎖住乙個互斥量,然後在完成操作...