gpt4 book ai didi

c++ - 线程可以在返回之前被调度程序中断吗?

转载 作者:搜寻专家 更新时间:2023-10-31 01:15:10 27 4
gpt4 key购买 nike

我有两个线程分别作为生产者和消费者。在生产者线程中,我得到了以下代码:

{
mediaQueue->PushEvent( boost::bind(/* params are not important */) );

return 0;
}

mediaQueue 是一个消息队列,在调用 PushEvent() 时,会通知一个线程有一个作业要处理。消费者线程只执行用 bind 创建的仿函数。

对我来说,生产者线程在消费者线程执行仿函数之前返回是非常重要的。

那么问题来了:producer 是否有可能在它推送事件之后但在它返回之前被打断?

到目前为止,我的研究让我认为这是可能的,我应该实现锁定,但您对此有何看法?

最佳答案

调度程序可以随时中断您的线程。当它的时间到了时,它(不一定)知道或不关心你的线程在做什么。如果可能存在竞争条件,是的,您必须花时间和精力来实现正确的锁定。

在您的情况下,这很容易。只需等待从 PushEvent 函数返回时在被调用函数中设置的对象。

关于c++ - 线程可以在返回之前被调度程序中断吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10445580/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com