我是一个pthreads的新手,我希望有人可以帮助解决我遇到的问题。假设你有一个线程的集合,所有被传递相同的功能,这看起来是这样的:强制线程之间的通信
void *func(void *args) {
...
while(...) {
...
switch(...)
{
case one:
do stuff;
break;
case two:
do other stuff;
break;
case three:
do more stuff;
break;
}
....
}
}
在我的情况下,如果“情况下,一个”由任何线程引发的,我需要所有的线程退出交换机并返回到while循环的开始。也就是说,没有任何线程等待一定的条件。如果在每个线程运行while循环时只触发“情况2”和“情况3”,则线程将继续独立运行而不会相互干扰。
由于上述过于模糊,所以我应该添加一些上下文。我正在通过线程处理多个客户端的游戏服务器上工作。上述功能对应于游戏代码,并且这些情况是玩家可以进行的各种移动。游戏具有全局和本地组件 - 第一种情况对应于全局组件。如果任何玩家选择一个(移动)一个,它会影响所有玩家的游戏板。在while循环的开始和开关之间是在视觉上更新玩家游戏板的代码。在双人游戏中,如果一个玩家选择移动一个游戏,则第二个玩家在他/她进行移动之前将无法看到该移动,这会影响游戏玩法。我需要董事会的全球部分来动态更新。
无论如何,我很抱歉如果这个问题是微不足道的,但在互联网上的初步搜索没有产生任何有价值的东西。这可能只是因为我需要改变代码的整个结构,但我坚持这一点,因为它非常接近工作。
我可以建议你阅读一些关于Thread编程的更多技术性的东西吗?特别是关于线程同步和通过互斥锁和/或条件变量的通信。例如:https://computing.llnl.gov/tutorials/pthreads/ –
玩家线程是否花费很长时间来执行“其他东西”或“更多东西”,并且是否希望它们被中断?或者是线程主要是等待玩家进行移动,并且你是否想要中断这个等待(以及在那里等待什么功能)? – Armali