CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

请问创建线程时,怎样给线程传递参数??

楼主chou16(doudou)2002-12-12 18:00:36 在 VC/MFC / 基础类 提问

UINT   ProxyThread(LPVOID   pParam)        
  {  
          return   NULL;  
  }  
  char   a='a';  
  m_pServerThread=AfxBeginThread(&ServerThread,&a,  
                                      THREAD_PRIORITY_NORMAL,0,  
                              CREATE_SUSPENDED);  
  这样可以把a的地址传过去吧?  
  可是在线程里怎么用不了a,比如char   b=*a;有错误! 问题点数:20、回复次数:6Top

1 楼xt_jat(桑巴)回复于 2002-12-12 18:06:03 得分 3

你需要保证你在使用a时a还存在。  
  a是局部变量吗?Top

2 楼isdong(有些事情应该忘记)回复于 2002-12-12 18:08:04 得分 2

定义成static的Top

3 楼staticip(staticip)回复于 2002-12-12 18:10:01 得分 5

新线程ProxyThread和创建ProxyThread的线程是并发执行的,所以有可能创建ProxyThread的线程已经return,这样自动变量a就会被释放,这时ProxyThread线程正好执行道使用a的地方,这样就会访问一块已经被释放的内存,所以出错。  
   
  所以必须保证线程参数指针指向的地址,在线程使用它的所有地方都还有效。一般用自动变量都不能保证这点,所以要么用new/malloc动态内存分配,或者用static变量、类的数据成员一般都可以保证地址有效。  
  Top

4 楼chou16(doudou)回复于 2002-12-13 09:47:54 得分 0

我这次把char   a='f';声明为了全局变量,可是还是不行。  
  UINT   ProxyThread(LPVOID   pParam)        
  {  
          return   NULL;  
  }  
  在线程里:pParam       0x00416c1   char   b  
                      &b               0x00416c1   “f”  
                      *pParam     cxx0034:   Error:   types   incompatible   with   operator  
                      b                 102   'f'  
  这是什么原因我还是无法得到变量b的值f?  
  LPVOID可不可以换成别的类型?  
  Top

5 楼efstudent(eaglefly)回复于 2002-12-13 10:13:50 得分 10

由于pParam是LPVOID的类型,因此需要强制转换,具体可以如下操作,  
  char   *pChar   =   (char*)pParam;  
   
  祝你好运  
  Top

6 楼chou16(doudou)回复于 2002-12-13 10:38:11 得分 0

好的,多谢Top

相关问题

  • CreateThread 创建线程时 如何传递参数
  • 请问创建线程函数CreateThread的参数如何传递
  • 创建新的线程如何传递多个参数?
  • 多线程的参数传递问题
  • 线程间的参数传递
  • 关于线程传递参数!
  • 关于多线程传递参数
  • 线程如何传递参数啊?
  • 传递给线程的参数出错!!
  • 新建线程参数传递问题

关键词

  • 线程
  • proxythread
  • 变量
  • pparam
  • 创建
  • lpvoid
  • 保证
  • 地址
  • 使用
  • char

得分解答快速导航

  • 帖主:chou16
  • xt_jat
  • isdong
  • staticip
  • efstudent

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo