#include #include #include #include // 信号量实例 sem_t sem; // 定义信号量 void *printer(void *data) { char *msg = (char *)data; // P 操作 sem_wait(&sem); // 本案例中锁住了控制台 while (*msg) { printf("%c", *msg++); fflush(stdout); usleep(200 * 1000); } // V 操作 sem_post(&sem); return NULL; } int main(int argc, char const **argv) { // 信号量初始化 sem_init(&sem, 0, 1); pthread_t tid1, tid2; pthread_create(&tid1, NULL, printer, "disen666\n"); pthread_create(&tid2, NULL, printer, "lucy888\n"); pthread_join(tid1, NULL); pthread_join(tid2, NULL); printf("\n---over---\n"); // 销毁信号量 sem_destroy(&sem); return 0; }