好像两个线程都没有得到执行权限,是消息响应函数里不能写多线程还是其他原因呢,求解释,在线等

主要是txt文件比较大(25G),在对话框中有个编辑框,显示信息,有个button控件,当点击button控件时进入消息响应函数,然后在消息响应函数里创建2个线程,一个用于从文件中循环读取一块数据到缓冲区再存入空闲空间,另一个用于从空闲空间取出一块数据进行处理。
在消息响应函数中:
HANDLE readHandle=CreateThread(NULL,0,ReadThread,NULL,0,NULL);
HANDLE manageHandle=CreateThread(NULL,0,ManageThread,NULL,0,NULL);
CloseHandle(readHandle);
CloseHandle(manageHandle);
hMutex = CreateMutex(NULL,TRUE,NULL);
ReleaseMutex(hMutex);
在第一个线程中(第二个类似):
DWORD WINAPI ReadThread( LPVOID lpParameter )
{
........
do{
WaitForSingleObject(hMutex,INFINITE);
.......
ReleaseMutex(hMutex);
}while(....);
......
}

莫回无
浏览 66回答 2
2回答

波斯汪

可以写多线程的,你的线程应该是执行了的。你可以在线程的开始的地方放一个AfxMessageBox("OK");进行测试。你没有看到执行,估计是WaitForSingleObject(hMutex,INFINITE);一直在等信号。

ITMISS

hMutex是全局变量么?先把WaitForSingleObject(hMutex,INFINITE);删除掉看看
打开App,查看更多内容
随时随地看视频慕课网APP