了解MSDN _beginthreadex函数示例

发布于 2024-10-05 12:53:58 字数 556 浏览 10 评论 0原文

_beginthreadex MSDN 上有此函数page

unsigned __stdcall SecondThreadFunc( void* pArguments )
{
    printf( "In second thread...\n" );

    while ( Counter < 1000000 )
    Counter++;

    _endthreadex( 0 );
    return 0;
}

我知道可以用函数GetExitCodeThread获取_endthreadex返回的值,但是如何获取return返回的值代码>?

另一个问题:_endthreadex 不是结束线程吗,为什么他们在后面放了一个return 0

There's this function on _beginthreadex MSDN page:

unsigned __stdcall SecondThreadFunc( void* pArguments )
{
    printf( "In second thread...\n" );

    while ( Counter < 1000000 )
    Counter++;

    _endthreadex( 0 );
    return 0;
}

I know you can get the value returned by _endthreadex with the function GetExitCodeThread, but how do you get the value returned by return?

Another question: doesn't _endthreadex end the thread, why did they put a return 0 after that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拒绝两难 2024-10-12 12:53:58

在此代码片段中,return 语句确实只是为了让编译器满意。然而,事实上,您不需要调用 _endthreadex,因为它是在您从线程函数返回后由 _beginthreadex 在内部调用的。它将您的返回值传递给 _endthreadex (或从中传递给 ExitThread)。

请参阅Raymond Chen 的文章

In this snippet the return statement is indeed only to make the compiler happy. However, in fact, you don't need to call _endthreadex as it is called internally by _beginthreadex after you return from your thread function. And it passes your return value to _endthreadex (or ExitThread, from it).

See Raymond Chen's article

止于盛夏 2024-10-12 12:53:58

return 0 只是为了让编译器满意。 _endthreadex 不返回。

return 0 is there just to make the compiler happy. _endthreadex does not return.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文