worker线程建立方法的区别
2005-10-02 16:49
211 查看
从MSDN中看来,创建Worker线程有两种不同的办法.一个是用CWinThread,一个用AfxBeginThread来启动一个线程函数.
实际上这两个办法,看上去是没有多少区别的.只是很多的编程书上大多提到了用AfxBeginThread+一个线程函数来创建线程的办法.对于怎么用CWinThread来做同样的是,大多没有提到.
AfxBeginThread函数启动Thread和用CWinThread启动线程的区别.这两个方法的最终结果是一样的.特别是在使用worker线程的时候.只不过是实现过程有点不同而已.
主要的区别在于:
1.如果线程里面有线程处理数据类的话,类的this指针的出现时候不一样.
一般来说用CWinThread类的话,会把数据处理过程放在CWinThread的派生里面.或者用CWinThread的派生作为一个入口.而用CWinThread类来启动worker线程的话,一般要先有有
一个CWinThread的this指针,换句话说CWinThread的this指针是在线程启动之前就准备好了.然后再由线程函数传递给CWinThread的一个实例.
而用AfxBeginThread直接启动一个worker线程的话,这个this指针的存在就可有可无了.如果一定有this指针的话,就是在线程函数里面对一个自定义的线程数据处理类进行实例化的
this指针了.
2.对于消息的处理,如果你的worker线程有很多数据要同界面进行交互操作.那么一般来说CWinThread可以用消息循环同界面线程来进行通讯,也可以同子线程进行通讯.
如果对于用AfxBeginThread启动的worker线程要同界面线程来进行交互,一般只能把界面线程的this指针做为一个参数传递给worker线程.然后在worker线程里面直接操作界面线程
的元素.或者也可以用SendMessage来同界面线程进行通讯.但是worker线程之间的通讯就会有些问题.可能可以进行一些简单的数据的传送(同界面线程,进行数据同步)
实际上这两个办法,看上去是没有多少区别的.只是很多的编程书上大多提到了用AfxBeginThread+一个线程函数来创建线程的办法.对于怎么用CWinThread来做同样的是,大多没有提到.
AfxBeginThread函数启动Thread和用CWinThread启动线程的区别.这两个方法的最终结果是一样的.特别是在使用worker线程的时候.只不过是实现过程有点不同而已.
主要的区别在于:
1.如果线程里面有线程处理数据类的话,类的this指针的出现时候不一样.
一般来说用CWinThread类的话,会把数据处理过程放在CWinThread的派生里面.或者用CWinThread的派生作为一个入口.而用CWinThread类来启动worker线程的话,一般要先有有
一个CWinThread的this指针,换句话说CWinThread的this指针是在线程启动之前就准备好了.然后再由线程函数传递给CWinThread的一个实例.
而用AfxBeginThread直接启动一个worker线程的话,这个this指针的存在就可有可无了.如果一定有this指针的话,就是在线程函数里面对一个自定义的线程数据处理类进行实例化的
this指针了.
2.对于消息的处理,如果你的worker线程有很多数据要同界面进行交互操作.那么一般来说CWinThread可以用消息循环同界面线程来进行通讯,也可以同子线程进行通讯.
如果对于用AfxBeginThread启动的worker线程要同界面线程来进行交互,一般只能把界面线程的this指针做为一个参数传递给worker线程.然后在worker线程里面直接操作界面线程
的元素.或者也可以用SendMessage来同界面线程进行通讯.但是worker线程之间的通讯就会有些问题.可能可以进行一些简单的数据的传送(同界面线程,进行数据同步)
相关文章推荐
- java中创建线程的两种方法及其区别
- 实现隋朝农民起义的过程:线程的yield与方法random判别的区别
- 线程中的 start()和run()方法的区别
- Hook技术3 建立远程线程的方法
- Java线程中sleep()、wait()和notify()和notifyAll()、yield()、join()等方法的用法和区别
- Thread类的sleep()方法和对象的wait()方法都可以让线程暂停执行,它们有什么区别?
- 线程sleep,wait,join,yield方法的区别
- 请问两种开启子线程的方法有何区别?
- 线程中sleep()方法和yeild()方法的区别
- java进程、线程通信方法以及进程与线程的区别
- java实现线程的两种方法有什么区别?
- JAVA线程sleep和wait方法区别
- Java线程中run和start方法的区别
- Thread线程中start()和run()方法的区别
- java线程的sleep(),wait(),notify(),yield()方法的区别要点
- java线程中run和start方法的区别
- java中创建线程的两种方法的区别
- Java集合HashSet-ArrayList-HashMap的线程同步控制方法和区别
- 抽象类和接口的区别,内部类引用外部方法final参数,守护线程和用户线程
- Java线程中yield与join方法的区别