相关疑难解决方法(0)

_beginthread与CreateThread

Windows中的CreateThread和beginthread API有什么区别?哪一个更适合创建线程?

c windows multithreading

10
推荐指数
1
解决办法
6309
查看次数

无法理解MSDN在_beginthreadex和_endthreadex上的文档

我读的文档_beginthreadex_endthreadex,但也有几件事情我不明白.

请注意,文档同时记录"扩展"和正常功能,但我没有使用_beginthread_endthread; 只有他们的扩展版本.


您可以显式调用_endthread或_endthreadex来终止线程; 但是,当线程从作为参数传递的例程返回时,会自动调用_endthread或_endthreadex.通过调用endthread或_endthreadex来终止线程有助于确保为线程分配的资源得到适当恢复.

  • 如果_endthreadex被自动调用,为什么调用它有助于确保"适当的资源恢复"?不论我是否打电话都不应该有任何区别,或者是这样吗?

_endthread会自动关闭线程句柄(而_endthreadex则不会).因此,在使用_beginthread和_endthread时,不要通过调用Win32 CloseHandle API显式关闭线程句柄.

  • 如果_endthreadex 关闭手柄,为什么我不应该关闭它CloseHandle
  • 我的所有线程只是通过从主函数返回而自动终止,并且从不强行终止.根据文档,当发生这种情况时会_endthreadex自动调用.

    这虽然不会关闭手柄.假设我确实需要关闭它,尽管如上所述,我怎么能这样做,因为此时线程已经死了?我应该以某种方式从另一个线程关闭它吗?如果我把它打开怎么办?

c++ winapi multithreading

3
推荐指数
1
解决办法
1439
查看次数

标签 统计

multithreading ×2

c ×1

c++ ×1

winapi ×1

windows ×1