设为首页 加入收藏

TOP

Linux线程间用信号量通信
2014-11-24 11:22:45 来源: 作者: 【 】 浏览:0
Tags:Linux 线程 信号 通信

原来总是用互斥锁(MUTEX)和环境变量(cond)去控制线程的通信,用起来挺麻烦的,用信号量(SEM)来通信控制就方便多了!


用到信号量就要包含semaphore.h头文件。


可以用sem_t类型来声明一个型号量。


用int sem_init(sem_t *sem, int pshared, unsigned int value)函数来初始化型号量,第一个参数就是用sem_t声明的信号量,第二变量如果为0,表示这个信号量只是当前进程中的型号量,如果不为0,这个信号量可能可以在两个进程中共享。第三个参数就是初始化信号量的多少值。


sem_wait(sem_t *sem)函数用于接受信号,当sem>0时就能接受到信号,然后将sem--;


sem_post(sem_t *sem)函数可以增加信号量。


sem_destroy(sem_t *sem)函数用于解除信号量。


以下是一个用信号控制的一个简单的例子。


程序的实现是控制先让thread1线程打印"hello "再让thread2线程打印"world!".


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇setsockopt()函数用法 下一篇TQ2440 查询法实现按键LED的功能

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解c语言指针和 (2025-12-27 01:19:11)
·为什么C标准库没有链 (2025-12-27 01:19:08)
·玩转C语言和数据结构 (2025-12-27 01:19:05)
·MySQL 基础入门视频 (2025-12-26 23:20:22)
·小白入门:MySQL超详 (2025-12-26 23:20:19)