我有一个多线程应用程序,但有时一个线程应该在 10 秒后醒来并做一些工作,但不会从睡眠中醒来或饿死。
它只是偶尔发生。
//ACE task svc method
int svc (void)
{
while(true)
{
ACE_DEBUG((MY_INFO "sleep\n"));
sleep(10);
ACE_DEBUG((MY_INFO "awake for HB\n"));
_csender.sendHeartBeat();
}
return 0;
}
日志最后一行是:2012-06-12 11:34:20.807272|INFO|sleep
线程要么没有唤醒 15 秒,要么在唤醒后直到第 15 秒才做任何工作,因此应用程序关闭。
应用程序中共有 6 个线程,所有线程都以相同的优先级启动。其中一个线程非常繁忙,它接收大量市场数据并对其进行处理,但不会在套接字上发送任何内容。上面的线程是唯一发送数据的线程,接收者和发送者线程共享同一个套接字对象。
这是在红帽 linux 5.3 上。
任何想法可能是什么问题?