semwait和semsignal(sem_wait的范例)

:暂无数据 2026-06-19 07:00:01 2

semwait和semsignal(sem_wait的范例)

“semwait和semsignal”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看semwait和semsignal(sem_wait的范例)!

本文目录

sem_wait的范例

//(有些琐碎的)程序以下展示了在一个未命名的信号量上的操作.程序请求2个命令行参数,  //第一个参数指定一个秒的参数来作为报警的定时器来产生SIGALRM信号.  //信号处理程序执行sem_post(3)来增加在main()函数中使用sem_wait()等待的信号量的值.  //第二个命令行参数指定超时的长度,为sem_timedwait()使用秒为单位.  //以下展示了程序的执行的不同效果.
$ ./a.out 2 3  About to call sem_timedwait()  sem_post() from handler  sem_getvalue() from handler; value = 1  sem_timedwait() succeeded  $ ./a.out 2 1  About to call sem_timedwait()  sem_timedwait() timed out  Program source  #include 《unistd.h》  #include 《stdio.h》  #include 《stdlib.h》  #include 《semaphore.h》  #include 《time.h》  #include 《assert.h》  #include 《errno.h》  #include 《signal.h》  sem_t sem;  #define handle_error(msg) /  do
{
perror(msg);
exit(EXIT_FAILURE);
} while (0)  static void  handler(int sig)  {  write(STDOUT_FILENO, sem_post() from handler/n, 24);  if (sem_post(&sem) == -1)   {  write(STDERR_FILENO, sem_post() failed/n, 18);  _exit(EXIT_FAILURE);  }  }  int  main(int argc, char *argv)  {  struct sigaction sa;  struct timespec ts;  int s;  if (argc != 3)   {  fprintf(stderr, Usage: %s /n,  argv);  exit(EXIT_FAILURE);  }  if (sem_init(&sem, 0, 0) == -1)  handle_error(sem_init);  /* Establish SIGALRM handler; set alarm timer using argv */  sa.sa_handler = handler;  sigemptyset(&sa.sa_mask);  sa.sa_flags = 0;  if (sigaction(SIGALRM, &sa, NULL) == -1)  handle_error(sigaction);  alarm(atoi(argv));  /* Calculate relative interval as current time plus  number of seconds given argv */  if (clock_gettime(CLOCK_REALTIME, &ts) == -1)  handle_error(clock_gettime);  ts.tv_sec += atoi(argv);  printf(main() about to call sem_timedwait()/n);  while ((s = sem_timedwait(&sem, &ts)) == -1 && errno == EINTR)  continue; /* Restart if interrupted by handler */  /* Check what happened */  if (s == -1)   {  if (errno == ETIMEDOUT)  printf(sem_timedwait() timed out/n);  else  perror(sem_timedwait);  }   else  printf(sem_timedwait() succeeded/n);  exit((s == 0) ? EXIT_SUCCESS : EXIT_FAILURE);  }

sem_wait的函数说明

sem_wait函数也是一个原子操作,它的作用是从信号量的值减去一个“1”,但它永远会先等待该信号量为一个非零值才开始做减法。也就是说,如果你对一个值为2的信号量调用sem_wait(),线程将会继续执行,将信号量的值将减到1。如果对一个值为0的信号量调用sem_wait(),这个函数就会原地等待直到有其它线程增加了这个值使它不再是0为止。如果有两个线程都在sem_wait()中等待同一个信号量变成非零值,那么当它被第三个线程增加 一个“1”时,等待线程中只有一个能够对信号量做减法并继续执行,另一个还将处于等待状态。sem_trywait(sem_t *sem)是函数sem_wait的非阻塞版,它直接将信号量sem减1,同时返回错误代码。

OK,关于semwait和semsignal和sem_wait的范例的内容到此结束了,希望对大家有所帮助。

semwait和semsignal(sem_wait的范例)

本文编辑:admin

本文相关文章:


temp是什么意思(temp的中文是什么意思啊怎么读啊)

temp是什么意思(temp的中文是什么意思啊怎么读啊)

本篇文章给大家谈谈temp是什么意思,以及temp的中文是什么意思啊怎么读啊对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年6月23日 20:50

system权限删除文件(删除文件时提示“您需要system提供的权限才能对此文件进行更改”,怎么破)

system权限删除文件(删除文件时提示“您需要system提供的权限才能对此文件进行更改”,怎么破)

大家好,如果您还对system权限删除文件不太了解,没有关系,今天就由本站为大家分享system权限删除文件的知识,包括删除文件时提示“您需要system提供的权限才能对此文件进行更改”,怎么破的问题都会给大家分析到,还望可以解决大家的问题

2026年6月22日 19:30

更多文章:


androidapp源码免费下载(如何实现APK的反编译得到APK的源码)

androidapp源码免费下载(如何实现APK的反编译得到APK的源码)

本篇文章给大家谈谈androidapp源码免费下载,以及如何实现APK的反编译得到APK的源码对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 18:00

security的反义词(risk的反义词)

security的反义词(risk的反义词)

大家好,今天小编来为大家解答以下的问题,关于security的反义词,risk的反义词这个很多人还不知道,现在让我们一起来看看吧!

2026年9月22日 15:40

二郎神杨戬简笔画(二郎神怎么画)

二郎神杨戬简笔画(二郎神怎么画)

本篇文章给大家谈谈二郎神杨戬简笔画,以及二郎神怎么画对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 10:50

service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)

service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)

大家好,关于service pack 3很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思的知识点,相信应该可以解决大家的一

2026年9月22日 10:20

html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)

html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)

本篇文章给大家谈谈html代码怎么写大佬教程,以及html网页的题来个大佬,写代码,题目在图上对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 10:10

结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)

结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)

本篇文章给大家谈谈结构体内又一个struct,以及c++ 在结构体中再嵌入一个结构体如何调用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 09:40

next是什么意思英语(next是什么单词)

next是什么意思英语(next是什么单词)

本篇文章给大家谈谈next是什么意思英语,以及next是什么单词对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 07:50

美国参议院人数(美国每个州的议员人数取决于什么)

美国参议院人数(美国每个州的议员人数取决于什么)

大家好,今天小编来为大家解答以下的问题,关于美国参议院人数,美国每个州的议员人数取决于什么这个很多人还不知道,现在让我们一起来看看吧!

2026年9月22日 05:20

高中信息技术python(高考信息技术用的是什么语言)

高中信息技术python(高考信息技术用的是什么语言)

今天给各位分享高考信息技术用的是什么语言的知识,其中也会对高考信息技术用的是什么语言进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月22日 02:50

cocos creator中文(cocoscreator和cocoscreator3d的区别)

cocos creator中文(cocoscreator和cocoscreator3d的区别)

各位老铁们好,相信很多人对cocos creator中文都不是特别的了解,因此呢,今天就来为大家分享下关于cocos creator中文以及cocoscreator和cocoscreator3d的区别的问题知识,还望可以帮助大家,解决大家的

2026年9月22日 02:30

最近更新

长沙外贸网站如何推广引流?
2026-09-22 21:24:05 浏览:0
苏州公司网站建设需要哪些基础功能
2026-09-22 21:22:34 浏览:0
热门文章

wait for you杨和苏(大家听下(wait for you)这首英文歌的开头那段音乐)
2026-06-13 16:20:04 浏览:22
刷关键字排名怎么操作最有效?
2026-09-14 20:02:13 浏览:14
oppo a9拆机教程(oppoa9拆机教程)
2026-06-13 10:40:02 浏览:12
标签列表