多线程编程须借用第三方库:NPTL线程库 Native POSIX Thread Library(NPTL)
线程间同步和互斥机制
信号量:
#include <stdio.h>
#include <unistd.h>
#include <semaphore.h>
sem_t sem;
int parked;
void park(){
while(1){
sem_wait(&sem);
parked++;
printf("enter 1 parked:%d\n",parked);
sleep(rand()%10);
}
}
void leave(){
while(1){
if(parked==0){
continue;
}
sem_post(&sem);
parked--;
printf("leave 1 now parked:%d\n",parked);
sleep(rand()%10);
}
}
int main(){
pthread_t thread1,thread2;
sem_init(&sem,0,5);
pthread_create(&thread1,NULL,park,NULL);
pthread_create(&thread1,NULL,leave,NULL);
pthread_join(thread1,NULL);
pthread_join(thread2,NULL);
return 0;
}
互斥锁
条件变量