首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在pthread API中等待信号量

在pthread API中等待信号量
EN

Stack Overflow用户
提问于 2011-09-05 00:51:04
回答 1查看 531关注 0票数 0

如果信号量的值是0,而你在等待它,我总是认为线程阻塞了。为什么下面的代码没有阻塞。

代码语言:javascript
复制
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>

sem_t sA;

void* funcA(void* param) {
  sem_wait(&sA);
  printf("Thread A\n");
  pthread_exit(0);
}

int main() {
  sem_init(&sA, 0, 0);
  pthread_t tA;
  pthread_create(&tA, NULL, funcA, NULL);
  pthread_exit(0);
  sem_destroy(&sA);
  return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2011-09-05 00:57:58

来自man sem_destroy:

代码语言:javascript
复制
   Destroying  a  semaphore  that other processes or threads are currently
   blocked on (in sem_wait(3)) produces undefined behavior.

看起来你的实现和我的实现对于如何处理这种未定义的行为采取了不同的选择。不过,任何事都行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7300716

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档