发布时间:2024年11月06日 14:17:57分享人:單槍野来源:互联网13
Semaphore,即信号量(CreateSemaphore/sem_init),官网解释是用来保护多重资源的访问,它可以设置一个大于0的值,如N,任何访问者在该信号量大于1的情况下均可以获得资源的访问权,并将相应的信号量减1,当访问完成后,信号量加1,即该资源可以同时容纳N个访问者。但是据我了解,一般在为了线程在某一定程度上的顺序执行才使用信号量,即线程A等待线程B执行完某些操作以后,才能继续往下执行,可以理解为,组装厂A需要等待(WaitForSingleObject/sem_wait)元件厂B交付元件以后(ReleaseSemaphore/sem_post)才能继续生产。当信号量不再使用时,销毁它(CloseHandle/sem_destroy)Mutex,(CreateMutex/pthread_mutex_init)互斥体,就是限制某一资源的访问,每次只能容纳一个访问者。访问者A进入房间以后立即锁门(WaitForSingleObject/pthread_mutex_lock),任何其他人都不许进入,等A访问完以后打开锁(ReleaseMutex/pthread_mutex_unlock),访问者B才可以进入。当资源不再被使用时,释放资源(CloseHandle/pthread_mutex_destroy).1.Semaphore在linux下与Semaphore相关的操作函数为:sem_init():初始化一个信号量
sem_wait():一直等待信号量,直到信号量大于0
sem_timedwait():设定超时等待。
sem_post():信号量加1
sem_destory():释放信号量。
例:#include <stdio.h>
#include <errno.h>
#include <semaphore.h>
#include <time.h>
int main() {
sem_t mysemp;
struct timespec ts;
int sts, val;
if ( sem_init (&mysemp, 0, 0) == -1 ) {//第二个参数设定信号量可见范围,0,进程内可见,用于线程间的同步操作,1是进程间可见。
perror("sem_init is err");
return P-1;
}
ts.tv_sec=time(NULL)+10;//10s超时等待
ts.tv_nsec=0;//不可少
sts = sem_timedwait(&mysemp, &ts);
//sts = sem_wai(&mysemp);//永远等待
....
sem_destroy(&mysemp);
}
2.Mutex
爱华网本文地址 » http://www.413yy.cn/a/25101011/96330.html
更多阅读
CATIA_V5R20安装教程与破解——简介本教程使用 64 位 Windows 7 操作系统环境中安装的,如果您使用的是 Windows 8、Windows XP、Windows2000、Windows2003、可能有所不同,敬请谅解CATIA_V5R20安装教程与破解——方法/步骤CATIA_V5R20
本文cztchoice/blog/item/b9b478fafc5a628e9f514635.html2008.11.10 2:00写了2小时,自己太水了,对那个东西一点都不知道,汗。。。要看书啊!!只看MSDN还是不行啊2008.11.10 12:00其实就是自己在初始化变量的时候初始化错了,我初始化为0,弄的所
“中秋”一词,最早见于《周礼》。根据我国古代历法,农历八月十五日,在一年秋季的八月中旬,故称“中秋”。因为秋中第二月叫仲秋,故中秋也称为“仲秋节”。农历八月十五是我国的传统节日,中秋节与春节、端午节、清明并称为中国汉族的四大
养生堂 >> 食物营养 >> 浏览文章竹叶的功效与作用简介-孕妇可以能喝竹叶茶吗来源:互联网 点击: 2257竹叶清热除烦 生津利尿 改善睡眠 抗癌,孕妇可以适量喝点竹叶茶,专家认为喜欢喝茶的孕妇可以适量喝点绿茶。竹叶有抗氧化、抗衰老、
养生堂 >> 食物营养 >> 浏览文章中药牛蒡的功效与作用简介-牛蒡的做法吃法来源:互联网 点击: 785久服轻身耐老的牛蒡中药牛蒡的功效与作用简介牛蒡为菊科牛蒡属二年生草本植物。生命力极其顽强,即使受了致命的摧折仍能顽强地生长,它的