隐袭战龙 发表于 2013-12-18 16:00:23

一个关于多线程函数的问题

现在我在学用多线程,我见到了三个多线程函数:
CreateThread()
_beginthread()
AfxCreateThread()
这三个函数到底怎么用,哪个更好?《windows核心编程》上说用_begintheread(),可是我见别人程序里都用的AfxCreateThread(),而且听说CreateThread()会导致内存泄露,但又有人说这个问题在windows98中就解决了,我到底该用哪个》怎么用?

364063141 发表于 2013-12-23 10:33:07

支持鱼C,顶一下

musilintan 发表于 2013-12-23 14:13:59

兄弟。。你第三个是不是写错了?是不是AfxBeginThread()啊。。。。如果是的话,那就他吧。第二个我没用过,我一般用1和3.
AfxBeginThread:当你继承CWinThread类生成自己新的线程类时,你应该使用AfxBeginThread来创建线程,该函数会返回一个线程句柄,你可以利用该句柄给线程发送消息,或者调用新线程类的函数。使用AfxBeginThread创建的线程,他可以在自己的内部形成一个线程体系。就像创造一个人一样,可以拥有自己的内部循环,而且可以接受来自外部的消息。
CreateThread:这个是通常情况下的创建方法,也就是基本的创建方法。他需要指定线程函数,也就是线程体。线程体是一个内部封闭的结构,除了又开始传递的参数外并没有自带的接受外部消息的功能。不过可以利用全局变量来控制线程函数,但有时会出现共享问题,会很麻烦,需要声明临界区。这个需要在网上查阅详细资料,这个是针对多线程的。如果单线程不必考虑。
至于第二个。。我也没有用过。你到百度上查吧。

隐袭战龙 发表于 2013-12-27 22:05:06

musilintan 发表于 2013-12-23 14:13 static/image/common/back.gif
兄弟。。你第三个是不是写错了?是不是AfxBeginThread()啊。。。。如果是的话,那就他吧。第二个我没用过, ...

谢谢,不过这个好像是mfc的东西,我还是用CreateThread把

仰望天上的光 发表于 2013-12-27 22:12:18

不要用CreateThread()。如果用了,在此线程函数中又使用了标准C库,就会出问题。

隐袭战龙 发表于 2013-12-28 13:58:41

仰望天上的光 发表于 2013-12-27 22:12 static/image/common/back.gif
不要用CreateThread()。如果用了,在此线程函数中又使用了标准C库,就会出问题。

在c++控制台用哪个好?api呢?

仰望天上的光 发表于 2013-12-28 21:16:33

隐袭战龙 发表于 2013-12-28 13:58 static/image/common/back.gif
在c++控制台用哪个好?api呢?

_beginthread()

编程难 发表于 2013-12-28 21:39:35

本帖最后由 编程难 于 2013-12-28 21:41 编辑

拜托,再好好看看《核心编程》,上面说的是用_beginthreadex而不是_beginthread。具体原因核心编程上已经说的很清楚了。

至于AfxBeginThread是mfc里的,若是在mfc中编程,尽量用AfxBeginThread。可以自行查找相关资料。

总之,可以使用AfxCreateThread()或者_beginthreadex,另外两个不推荐使用

隐袭战龙 发表于 2013-12-29 09:29:05

编程难 发表于 2013-12-28 21:39 static/image/common/back.gif
拜托,再好好看看《核心编程》,上面说的是用_beginthreadex而不是_beginthread。具体原因核心编程上已经说 ...

好吧,我承认我打错了很多字,谢谢你的帮助
页: [1]
查看完整版本: 一个关于多线程函数的问题