在创建线程时候碰到的问题以及思考
2006-11-18 16:07
225 查看
1.我在控制台下调用CreateThread函数创建了一个线程,但是在运行程序的时候发现 线程好像老是没有启动。或者在线程函数里面调用函数打印一行字,有时候打不出来,有时候打了一半。奇怪!
解决:发现原因是在创建的这个分线程开始或者执行到一半的时候,主线程已经结束了。恍然大悟。所以紧接着在后面使用函数WaitForSingleObject函数等待分线程的结束。
思考:善于发现问题。为什么有时候新线程执行了一半?这是问题的切入点。再思考,是否可以利用上面的现象呢?
2.线程函数是一个类里面的函数,想使用类里面的函数为线程函数,该函数必须是静态的,而静态函数有不能操作类里面的非静态变量,怎么办?
解决:往线程函数里面加一个参数,参数为类本身的一个实例。再用这个实例调用非静态变量。
思考:为什么静态函数不能调用非静态变量,是因为静态函数没有this指针,那么我们就给他加一个this指针,不就解决了吗?
注意:线程函数里面的参数要是一个指针,这样才能正确操作成员变量,保证不生成新的类实例。
解决:发现原因是在创建的这个分线程开始或者执行到一半的时候,主线程已经结束了。恍然大悟。所以紧接着在后面使用函数WaitForSingleObject函数等待分线程的结束。
思考:善于发现问题。为什么有时候新线程执行了一半?这是问题的切入点。再思考,是否可以利用上面的现象呢?
2.线程函数是一个类里面的函数,想使用类里面的函数为线程函数,该函数必须是静态的,而静态函数有不能操作类里面的非静态变量,怎么办?
解决:往线程函数里面加一个参数,参数为类本身的一个实例。再用这个实例调用非静态变量。
思考:为什么静态函数不能调用非静态变量,是因为静态函数没有this指针,那么我们就给他加一个this指针,不就解决了吗?
注意:线程函数里面的参数要是一个指针,这样才能正确操作成员变量,保证不生成新的类实例。
相关文章推荐
- ①servlet单例模式以及该单例类何时才会毁掉②服务器为每个用户创建线程,线程何时终止问题
- python学习进程和线程中碰到的问题以及问题解惑
- 在adapter的getview中获取图片的时候直接创建线程遇到的问题。
- c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。
- win32线程创建、线程同步以及读者写者问题
- python学习进程和线程中碰到的问题以及问题解惑
- 创建线程时候多参数传递方法及参数改变问题--扫雷辅助(三)
- Android 之 子线程中创建子线程以及子线程中toast 问题
- 关于java中多线程的问题的一点思考(什么情况下需要考虑到线程,以及线程安全的问题?)
- MyEclipse创建Maven工程的时候可能会碰到的问题1
- 创建web项目以及项目导入的时候Dynamic web module version的问题
- 在Freebsd下创建一个软链接的时候出现的问题以及解决办法
- MFC 线程创建在使用构造函数进行初始化线程的时候,创建线程实例了,但是线程并没有执行的问题
- MFC 自定义子线程新建对话框的数据传输问题 -- 以及由此对MFC的一些思考
- 一开始实现的时候,不知道贝塞尔曲线,自己去思考其他方法实现了。怎么想到用到贝塞尔曲线?以后碰到类似问题,应该先在网上找找都有什么方法实现。
- Java中的垃圾回收问题以及在创建对象的时候的内存的分析
- python学习进程和线程中碰到的问题以及问题解惑
- 在使用jquery的时候碰到的问题,以及跨域的问题
- 今天碰到一个poi解析excel文件的时候报错, 后来发现是这个excel文件单元格里面有公式。删除公式问题解决!
- 线程中创建窗口问题