线程中想保证代码的顺序执行. 好像要加什么机制,请指导.
for (;;)
{
WaitForSingleObject (g_hInterruptEvent, dwWaitTimeout);
nEvents = BspKbdGetScanCodes2 (dwScanCode, bKeyUp); ...... for (iEvent = 0; iEvent < nEvents; ++iEvent)
{
....
DoSomething();
}
...... }
for (;;)
{
WaitForSingleObject (g_hInterruptEvent, dwWaitTimeout);
nEvents = BspKbdGetScanCodes2 (dwScanCode, bKeyUp); ...... for (iEvent = 0; iEvent < nEvents; ++iEvent)
{
....
DoSomething();
}
...... }
解决方案 »
- 关于MFC加系统用户的问题
- API函数编写串口问题
- 在Release下能正常运行在Debug下出现无效窗口句柄现象,程序停留在ASSERT(::IsWindow(m_hWnd))
- 选择project/settings/general/Not using mfc与Use mfc in a static libray,前后变化后对程序有什么影响吗?
- 各位大侠,我在很多书上看到关于“句柄”的解释,看不懂!谁能帮助我解释一下啊?
- 如何获取系统串口所有的信息?
- 在单文档中继承ceditview类可不可以在view上画图?!!!!
- 谁能给我一个简单的VC中用水晶报表的例子,多谢!急!!!!
- 求高手指点“用Xtreme ToolkitPro画极坐标图”
- vc编程右键菜单问题
- 关于TCP编程的问题?
- ffmpeg学习资料
{
WaitForSingleObject (g_hInterruptEvent, dwWaitTimeout);
nEvents = BspKbdGetScanCodes2 (dwScanCode, bKeyUp); ...... for (iEvent = 0; iEvent < nEvents; ++iEvent)
{
....
DoSomething();
}
...... }
DoSomething()是一个有很多选择的函数. 在循环中,想要执行完上一次的DoSomething(), 再执行下一次的DoSomething(). 不要冲突.
那你的需求就可以实现啊
没有可能在DoSomething完成之前再次执行循环
// 一个文件没下载不能下载别的文件//创建一个事件,返回一个句柄m_hEventStop = ::CreateEvent(NULL, TRUE, FALSE, NULL);while (true)
{
// 等待50毫秒,依照需求定,也可设为 INFINITE:
DWORD dwRet = ::WaitForSingleObject(m_hEventStop, 50);
if (WAIT_TIMEOUT != dwRet)
break;
int pros_s = GetProgress(Get_Url());}// ...
不过如果你的DoSomething()和其中调用的函数在主线程或其它线程中也用到并且访问了和操作了相同的数据那就需要做控制了