这是一个奇怪的问题,所以我会尝试提供很长的解释。
假设您在单核机器上运行。而且您有 2 个线程,可以说是互斥锁的经典生产者消费者问题。现在我想知道何时在单核机器上运行(所以 1 核没有 HT):
C++ 中有没有办法将这 2 个线程的执行融合为一个,以便互斥锁可以实现为简单的 int 存储/加载操作,而不是互斥。例如,这是否可行:统一线程中的生产者代码可以只是将内容放入循环缓冲区中,如果当前的 buffer_idx 高于 processes_idx,消费者代码将只从缓冲区中读取。
我知道这似乎是一个愚蠢的问题,但是很多嵌入式的东西仍然是 1 个核心。为简单起见,假设两个线程都是形式
while(! shutdown)
{
//...
}
只是把两个身体都放在一个大的时间里会按预期工作吗?