linux-线程同步之信号量
1.任务:用户从终端输入任意字符然后统计字符个数显示,输入end则结束 2.使用多线程实现:主线程获取用户输入并判断是否退出,子线程计数 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <pthread.h> 5 #include <semaphore.h> 6 7 char buf[200] = {0}; 8 sem_t sem; 9 void *func(void *arg); 10 //子线程程序,作用就是统计buf中的字符个数并打印 11 void *func(void *arg) 12 { 13 //子线程中首先应该有个循环,在等待主线程激活的时候要在循环中阻塞; 14 //子线程被激活后就去获取buf中的字符长度,然后打印;打印完成之后再次被阻塞 15 sem_wait(&sem); 16 while(strncmp(buf, "end", 3) != 0) 17 { 18 printf("输入了%d个字符\n",strlen(buf)); 19 memset(buf, 0, sizeof(buf)); 20 sem_wait(&sem); 21 } 22 pthread_exit(NULL); 23 } 24 25 int main(void) 26 { 27