永发信息网

求高手请教~!!

答案:4  悬赏:80  手机版
解决时间 2021-04-07 22:12
  • 提问者网友:咪咪
  • 2021-04-07 02:55
求高手请教~!!
最佳答案
  • 五星知识达人网友:神鬼未生
  • 2021-04-07 03:35
提示,少了头文件 MtVerify.h 。缺少了文件,你找找拷贝到test4.cpp所在的文件夹。


我猜mtVerify.h只是有MTVERIFY这个宏的定义,应该是这样的。
#define MTVERIFY(x) if(!(x)) return EXIT_FAILURE;


同时发现代码中NUM_TASKS应该是NUMBER_TASKS 。我整理了一下可以运行,我去掉了mtverify.h文件


#define WIN32_LEAN_AND_MEAN
#include 
#include 
#include 


DWORD WINAPI ThreadFunc(LPVOID);


#define THREAD_POOL_SIZE 3
#define THREAD_MAX_INDEX THREAD_POOL_SIZE-1
#define NUMBER_TASKS 6


#define MTVERIFY(x) if(!(x)) return EXIT_FAILURE;
int main(){
HANDLE hThrds[THREAD_POOL_SIZE];
int slot=0;
DWORD threadId;
int i;
DWORD rc;


for(i=1;i<=NUMBER_TASKS;i++)
{
if(i>THREAD_POOL_SIZE)
{
rc=WaitForMultipleObjects(
THREAD_POOL_SIZE,
hThrds,
FALSE,
INFINITE);
slot=rc-WAIT_OBJECT_0;
MTVERIFY(slot>=0&&slot

printf("Slot %d terminated
",slot);MTVERIFY(CloseHandle(hThrds[slot]));
}
MTVERIFY(hThrds[slot++]=CreateThread(NULL,
0,
ThreadFunc,
(LPVOID)slot,
0,
&threadId)
);

printf("Launched thread #%d(slot %d)
",i,slot);}
rc=WaitForMultipleObjects(
THREAD_POOL_SIZE,
hThrds,
TRUE,
INFINITE);
MTVERIFY(rc>=WAIT_OBJECT_0&&rcfor(slot=0;slotMTVERIFY(CloseHandle(hThrds[slot]));

printf("All slots terminated 
");

return EXIT_SUCCESS;
}


DWORD WINAPI ThreadFunc(LPVOID n)
{
srand(GetTickCount());
Sleep((rand()%10)*800+500);

printf("Slot %d idle
",n);return ((DWORD)n);
}

全部回答
  • 1楼网友:笑迎怀羞
  • 2021-04-07 05:28
包含文件路径不对, 在工程选中此文件的文件属性更改路径
  • 2楼网友:梦中风几里
  • 2021-04-07 05:18
没有头文件,cp到你的程序文件夹下就好了
  • 3楼网友:等灯
  • 2021-04-07 05:02
"MtVerify.h" 这个文件是自定义的头文件,程序编译的时候,你所在的目录下,找不到这么文件;
解决的办法,只能找到这个 "MtVerify.h" 文件,拷贝到你的程序目录下。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯