void Thread1
{
EnterCriticalSection(&cs);
//全局资源操作
LeaveCriticalSection(&cs);
}void Thread2
{
while(true)
{
EnterCriticalSection(&cs);
//全局资源操作
LeaveCriticalSection(&cs);
}
}
这2个线程启动后,Thread1至多只能运行一次,全被Thread2抢去了,如何控制优先级,让Thread2里的LeaveCriticalSection(&cs);后让Thread1里的EnterCriticalSection(&cs)响应,而不是Thread2里的。
{
EnterCriticalSection(&cs);
//全局资源操作
LeaveCriticalSection(&cs);
}void Thread2
{
while(true)
{
EnterCriticalSection(&cs);
//全局资源操作
LeaveCriticalSection(&cs);
}
}
这2个线程启动后,Thread1至多只能运行一次,全被Thread2抢去了,如何控制优先级,让Thread2里的LeaveCriticalSection(&cs);后让Thread1里的EnterCriticalSection(&cs)响应,而不是Thread2里的。
具体可以参考:CreateMutex、WaitForSingleObject
HANDLE hThread, // handle to the thread
int nPriority // thread priority level
);
//优先级好像不能超过15
表达的是有问题,9楼说的很正确void Thread1
{
while(true)
{
accept();//这里有个阻塞函数如accept,recv之类的
EnterCriticalSection(&cs);
//全局资源操作
LeaveCriticalSection(&cs);
}
}Thread1在阻塞函数执行完成之后,下面也不会执行到,全被Thread2抢去了
似乎跟我的问题没什么联系,而且单核cpu是无效的
能把两个线程的 进入临界区的
EnterCriticalSection(&cs);
附近的代码提出来没,照目前的情况来看,你的程序应该不会出现独占现象。需要详细的代码。