各位前辈,小弟刚刚入门并发编程,遇到了这样一个问题,代码如下:
void * thread_main(void *arg)
{
while (true)
{
lock();
//执行代码
unlock();
}
}
在并发编程中是否存在这样一种情况(理论上):
比如说while(true)循环进入后就是临界区,而且临界区内代码比较复杂,执行时间长,这样当前线程可能在时间片用完时,正位于临界区中,另一个线程如果要进入临界区,此时处于阻塞状态,操作系统无法给另一个线程分配时间片,所以操作系统继续执行当前线程,下一次时间片用完时极大可能还是在临界区中,这样的话另一个线程始终得不到时间片。
是否存在这种问题呢,望各位前辈指教。