使用CRITICAL_SECTION来实现线程时, 保证每一个EnterCriticalSection都有对应的LeaveCriticalSection的情况下, 线程A的代码:
EnterCriticalSection(&dt_cs);
if (...)
{
..
LeaveCriticalSection(&dt_cs);
return false;
}
else
{
LeaveCriticalSection(&dt_cs);
Sleep(1);
return true;
} 上面Sleep时间的太短竟然会引起整个程序的挂起. 改为Sleep(100)又正常了.不知道有没有人遇到过这问题.
EnterCriticalSection(&dt_cs);
if (...)
{
..
LeaveCriticalSection(&dt_cs);
return false;
}
else
{
LeaveCriticalSection(&dt_cs);
Sleep(1);
return true;
} 上面Sleep时间的太短竟然会引起整个程序的挂起. 改为Sleep(100)又正常了.不知道有没有人遇到过这问题.
解决方案 »
- Vista 上OpenSCManager 失败!
- 问一声,winsock中套接字缓存最大是多少啊?
- 一句话问题, 一个线程读,一个线程写需要做互斥码??
- 我在listctrl里逐次加入图片,想用进度条显示加载的比例,如何实现呢?
- 请问大伙们有没有可能反编译看dll里面的程序呢?
- 怎样在SDK编程中实现 IP Address Control 控件的形式!(简单 送分)
- Html中同时含有中文,英文,日文等多语言。显示问题?
- 一些工业软件中,都留了一个给程序员的外部编程接口(api),实现的原理是什么啊?
- 讨论一下歌词秀的编程原理?
- 怎样遍历一个TreeCtrl控件的所有节点.
- 关于激活菜单项
- 我在控件中打开一个无模式对话框,结果对话框上的edit框不好使!
如果sleep函数,设置的置过小,大量的cpu时间都会浪费到线程切换上。
这样整个程序将可能不能向下运行,可能影响整个系统的稳定性具体可以参考sleep(0)的应用。