- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到发送到信号量的段错误。实际的崩溃发生在这一行:
sem_post(flag);
这是我正在使用的代码:
//global variable for the use of all threads:
sem_t *flag= NULL;
//in main,before creating the threads:
sem_init(flag,0,1);
//in function of the threads :
sem_post(flag);
我还尝试简单地使用全局信号量来代替指向信号量的指针。我该如何解决这个问题?
最佳答案
我相信您使用 sem_t *
类型的方式看似合理但不正确。您不想让信号量本身成为 sem_t *
(这意味着“我不是 sem_t
,但我可以告诉您信号量在哪里”),您会希望这样信号量的类型为 sem_t
。
因此,当您调用 sem_init
时,您需要传入信号量的地址,如下所示:
sem_init(&flag, 0, 1);
同样,要发布到信号量,您需要编写
sem_post(&flag);
让我们将其与您现在正在做的事情进行对比。通过将 flag
设为指向 NULL
的 sem_t *
,您是在说“我指向一个信号量,只不过我实际上不是指着一个。”调用 sem_init 并传入空指针是一个错误 - 这意味着“请在空指针指向的位置构造一个信号量”,这在语义上是不正确的。您发生的崩溃是因为您类似地说“请发布到此空指针指向的信号量”。通过将一个诚实的信号量对象传递给函数,您可以说“这是我的信号量 - 请用它做一些好事。”
关于c - sem_post(flag) 上的段错误运行时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56776759/
假设 10 个进程正在使用 sem_wait() 等待一个信号量。 第 11 个进程对该信号量调用 sem_post。 10 个进程中的哪个将进入关键块? 像随机吗?所有的进程都会被唤醒并争取实现一个
信号处理程序中对sem_post()的使用是否依赖未定义的行为? /* * excerpted from the 2017-09-15 Linux man page for sem_wait(3)
我正在尝试使用信号量编写一个小型 C 程序,但我遇到了这个我无法解决的问题。我总是在 sem_post 遇到段错误。这是我的服务器代码中主要方法的相关部分: sem_t * sem_query = N
我有一个带有信号量的队列。在某些时候,所有对 sem_post() 的调用总是返回“无效参数”错误,尽管信号量本身是有效的 信号量是C++对象的私有(private)成员,永远不会被删除,也可以在gd
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我正在尝试在 Linux 上创建一个包装器,它控制一次允许执行多少个并发执行。为此,我使用了系统范围内的计数信号量。我创建信号量,执行 sem_wait(),启动子进程,然后在子进程终止时执行 sem
这个问题已经有答案了: why is the semaphore not working? (3 个回答) 已关闭 4 年前。 sem_post() 无法正常工作,既不增加信号量的值,也不阻止附加到该
我正在做我的项目,正确清理所有内容并将所有缓冲的日志消息保存到文件等是至关重要的。我正在从另一个线程调用退出,我正在考虑使用信号量等待在程序完全退出之前在主线程中进行清理。问题是,当我从使用 atex
我认为我的代码不会打印文本 oh why come here!\n 但确实如此。 system() 有什么“错误”吗?因为,当我删除它时,代码按我的要求运行,停止了。 #include #inclu
我想在我的 linux(ubuntu 发行版)中编辑 sem_post() 和 sem_wait() 函数。但是我找不到功能的位置。我假设它在内核的 semaphore.c 上,但我找不到。我的lin
我正在尝试在 Windows 8 机器上使用 Eclipse 和 ARM Sourcery Windows GCC C 构建示例代码。当我编译代码时:我收到此错误: Undefined referen
我有一段代码需要快速运行,现在我正在使用 pthread_mutex_lock/pthread_mutex_unlock 来同步线程,但我发现它对性能有一定的影响。我想知道,如果有人对此进行基准测试,
这是一个奇怪的问题。我先初始化sem并销毁它,然后我在一个线程中再次初始化它。然后,我无法再次唤醒它。代码是: #include #include #include #include #inc
在 linux 代码中,我记得听说 mutex_lock() 周围有一个完整的内存屏障。我想确定它是否也在 sem_xxx 附近。 最佳答案 权威答案在这里: http://pubs.opengrou
我试图在我拥有的一段Python代码中锁定多个变量,每个变量一个锁。使用 semaphore.h 中提供的 sem_wait、sem_post、sem_init 例程可以轻松地在 C 语言中锁定变量。
我是一名优秀的程序员,十分优秀!