类成员函数中启动一个子线程,可否在子线程中控制该函数的返回值?
子线程是用来监测系统内存使用情况的,希望在内存使用超出阈值时结束调用该线程的成员函数,并且希望能指定这种情况下的函数返回值。
该如何实现呢? 子线程
[解决办法]
使用Signal就好了。或者发送消息等
[解决办法]
你这个需求并非非要多线程才能解决,重载new再对内存使用情况进行簿记就行了。
[解决办法]
F1中用_beginthreadex() 创建了一个监视线程,这个线程有个回调函数,假设是 unsigned int __stdcall mon(......)
_beginthreadex() 返回一个HANDLE,假设是hd。
mon函数检测内存,并且有关闭F2()的能力。
发现内存占用超过的时候,mon杀掉或者通知F2返回,同时自己返回 return 1(或者其他什么数字,不要是正常返回的0就行)
在F1中:
HANDLE hd = _beginthreadex(..mon....);
F2();
//下面加入waitfor handle
WaitForSingleObject(hd, INFINTE); //等待线程mon返回
DWORD rvalue;
GetExitCodeThread(hd, &rvalue);
//调用正确的话rvalue就是刚才mon函数返回的值,
return rvalue; // 一般正常返回时0,不正常才是其他,你这里正常返回是1,所以mon返回可以是2或者其他的数字
这样main就可以根据F1返回值判断了。