Linux IPC POSIX 信号量.doc

上传人:白大夫 文档编号:3255185 上传时间:2019-08-06 格式:DOC 页数:2 大小:16KB
返回 下载 相关 举报
Linux IPC POSIX 信号量.doc_第1页
第1页 / 共2页
亲,该文档总共2页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Linux IPC POSIX 信号量.doc》由会员分享,可在线阅读,更多相关《Linux IPC POSIX 信号量.doc(2页珍藏版)》请在三一文库上搜索。

1、Linux IPC POSIX 信号量模型#include#include#includesem_open() /初始化并打开有名信号量sem_init() /创建/获得无名信号量sem_wait()/sem_trywait()/sem_timedwait()/sem_post()/sem_getvalue() /操作信号量sem_close() /退出有名信号量sem_unlink() /销毁有名信号量sem_destroy() /销毁无名信号量sem_open()/创建/打开一个有名信号量,成功返回新信号量的地址,失败返回SEM_FAILED设errno/ /#define SEM_FAI

2、LED (sem_t *) 0/#define SEM_VALUE_MAX (2147483647)/Link with -pthread.sem_t *sem_open(const char *name, int oflag);sem_t *sem_open(const char *name, int oflag, mode_t mode, unsigned int value);oflagO_CREAT如果信号量不存在就创建信号量,信号量的UID被设为调用进程的effecTIve UID,GID被设为调用程序的GID,可以在mode指定权限O_EXCL和O_CREAT连用,确保可以创建新的

3、信号量,如果已存在就报错value:配合O_CREAT使用,设置信号量的初始值sem_init()/初始化无名信号量,成功返回0,失败返回-1设errno/Link with -pthread.int sem_init(sem_t *sem, int pshared, unsigned int value);sem创建无名信号量的指针pthread指定信号量是在线程间使用还是进程间使用0表示信号量在一个进程内的线程间使用,此时信号量应该分配的在线程可见的内存区域(eg,全局区,BSS段,堆区)非0表示信号量在进程间使用,此时信号量应该分配在共享内存里,If pshared !=0,sem_wa

4、it()/sem_trywait()/sem_TImedwait()/Link with -pthread./成功返回降低后的信号量的值,失败返回-1设errno/试图占用信号量,如果信号量值0,就-1,如果已经=0,就block,直到0int sem_wait(sem_t *sem);/试图占用信号量,如果信号量已经=0,立即报错int sem_trywait(sem_t *sem);/试图占用信号量/如果信号量=0,就block abs_timeout那么久,从 Epoch, 1970-01-01 00:00:00 +0000 (UTC).开始按纳秒计/如果时间到了信号量还没0,报错int

5、 sem_TImedwait(sem_t *sem, const struct TImespec *abs_timeout);struct timespec time_t tv_sec; /* Seconds */ long tv_nsec; /* Nanoseconds 0 . 999999999 */;sem_post()/归还信号量,成功返回0,失败返回-1设errno/Link with -pthread.int sem_post(sem_t *sem);sem_getvalue()/获得信号量sem的当前的值,放到sval中。如果有线程正在block这个信号量,sval可能返回两个值

6、,0或“-正在block的线程的数目”,Linux返回0/成功返回0,失败返回-1设errno/Link with -pthread.int sem_getvalue(sem_t *sem, int *sval);sem_close()/关闭有名信号量,成功返回0,失败返回-1设errno/Link with -pthread.int sem_close(sem_t *sem);sem_unlink()/试图销毁信号量,一旦所有占用该信号量的进程都关闭了该信号量,那么就会销毁这个信号量/成功返回0,失败返回-1设errno/Link with -pthread.int sem_unlink(const char *name);sem_destroy()/销毁信号量,成功返回0,失败返回-1设errno/Link with -pthread.int sem_destroy(sem_t *sem);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1