Linux系统编程之pthread多线程与互斥编程
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
int count = 0;
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; // 静态初始化
void* thd_print(void* arg)
{
while(1)
{
pthread_mutex_lock(&mutex);
count++;
printf("%s : count = %d \r\n", (char *)arg, count);
if(count > 5)
{
pthread_mutex_unlock(&mutex);
break;
}
pthread_mutex_unlock(&mutex);
usleep(300 * 1000);
}
return NULL;
}
int main(void)
{
pthread_t pid[2];
char* thdname[] = {"thread1", "thread2"};
// 创建线程
pthread_create(&pid[0], NULL, thd_print, thdname[0]);
pthread_create(&pid[1], NULL, thd_print, thdname[1]);
// 等待线程退出回收资源
pthread_join(pid[0], NULL);
pthread_join(pid[1], NULL);
printf("Hello World \r\n");
return 0;
}