C++编程,线程中出错该如何返回?

我用receiveThread=(HANDLE)_beginthread(ReceiveData,0,0);来开辟线程的,请问ReceiveData函数中的错误该怎么处理... 我用
receiveThread = (HANDLE)_beginthread(ReceiveData, 0, 0);
来开辟线程的,请问ReceiveData函数中的错误该怎么处理?
因为beginthread函数要求ReceiveData是void ReceiveData( void *p) 的格式,
请问这种情况下,ReceiveData函数中的出错怎么返回呢?
展开
 我来答
龚炜林
2012-08-16 · TA获得超过1560个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:568万
展开全部
ReceiveData是线程执行函数,在函数中如果出错,你可以结束线程 _endthread(线程退出码),然后GetExitCodeThread(线程句柄,存储退出码的变量地址DWORD *型)获取线程退出码,从而判断错误。另外你也可以把_beginthread的第3个参数设置成一个变量的地址如:
int error=0;
_beginthread(ReceiveData, 0, (void *)&error);
然后在ReceiveData(void *p)
{
int *perror=(int *)p;
}就可以设置error的值,你可以检测error的值来判断错误。
网创思路提供者老米
2012-08-16 · TA获得超过412个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:369万
展开全部
线程函数不需要返回,你如果要在线程函数里面做错误处理,就用try..catch

线程函数就像主函数,主函数里面返回-1,系统也只能提示错了,然后结束。
线程函数里面某个地方如果错了,你就不要返回,直接抛出错误,(try catch) ,或者将线程结束
追问
请问  如果try catch 都放在线程里面吗?

能不能再线程里面 throw 在抛出线程的函数里面 catch?
追答
我对try catch 不太熟,不过throw出的异常通常是由上面的程序处理,就像主函数抛出异常,是操作系统处理,还有一种方式,就是设置线程退出码,在结束线程后由系统处理。由于线程是和主函数(进程)共享资源的,所以线程里面有什么错误,你用主函数的某个全局变量记录,主函数再用一个线程专门处理这个错误,可以不?不过要记住并发控制。所以你不需要通过线程返回来处理错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Jaceyapple520
2012-08-16
知道答主
回答量:11
采纳率:0%
帮助的人:1.7万
展开全部
下面是msdn的说明:
If (_beginthread) successful, it returns a handle to the newly created thread; however, if the newly created thread exits too quickly, _beginthread might not return a valid handle .
_beginthread returns -1L on an error, in which case errno is set to EAGAIN if there are too many threads, to EINVAL if the argument is invalid or the stack size is incorrect, or to EACCES in the case of insufficient resources (such as memory).
另外,线程根据优先级,获得cpu时间片,接下来,你懂得!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式