今天写多线程遇到了几个问题,导致程序一直无法正常运行:
- 多个线程共用一个函数的时候,,由于没有用线程锁,导致无法正常运行;
- 函数中有while循环,加入多线程之后,,由于没有进行初始化互斥量,导致只有第一个线程起作用。
线程锁之互斥锁的使用:
- 定义互斥量:pthread_mutex_t mutex;
- 初始化互斥量:pthread_mutex_init(&mutex,NULL);
- 上锁:pthread_mutex_lock(&mutex);
- 解锁:pthread_mutex_unlock(&mutex);
- 销毁:pthread_mutex_destroy(&mutex);
下面是例子:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#define THREADMAX 10
int sid[10];
pthread_t thread[THREADMAX]