CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  进程/线程/DLL

线程函数里调用的函数有什么要求吗 (立结)

楼主Wilbur2006()2006-03-06 09:54:27 在 VC/MFC / 进程/线程/DLL 提问

比如My_Thrd是线程函数  
   
  UINT   CMyClass::My_Thrd(void   *pParam)  
  {  
   
    CMyClass   *   pMyObj   =   (   CMyClass   *)   pParam;  
   
        //char   *p;  
        //int   n;      
  pSock->A(p,n);  
   
   
            return   1;  
   
   
  }  
   
  那么对于A函数   有什么要求吗?  
   
  我把A定义成这样   它报错说是本地函数定义是非法的    
  BOOL     A   (   char   *   m_p,   int   m_length   )  
  {  
  //.....  
   
  return   TRUE;  
   
   
  } 问题点数:100、回复次数:10Top

1 楼lzzqqq(Jonersen)回复于 2006-03-06 09:59:50 得分 20

没什么要求.  
  是不是你的A函数定义成了private了?  
  线程函数只能是全局函数或类的static函数.Top

2 楼striking(庸人自扰)回复于 2006-03-06 10:01:18 得分 20

看看A函数会不会被其它线程调用,   还有A里面是否有数据是别的线程会使用的,    
  比如一段内存,   可能你这个线程读,   别的线程写,   归根结底,   注意线程同步Top

3 楼Wilbur2006()回复于 2006-03-06 10:02:06 得分 0

更正   pSock->A(p,n);改为pMyObj->A(p,n);Top

4 楼alfwolf(木马煞)回复于 2006-03-06 10:03:17 得分 20

没什么特殊要求,只要线程函数可以访问A函数即可  
  在这里要保证pSock是一个合法的可以被访问的对象,而A是pSock的公共成员函数Top

5 楼yinzhaohui(努力)回复于 2006-03-06 10:05:49 得分 30

1.你的pSock是那儿来的.  
  2.你的pSock中应当有A的定义  
  BOOL   A   (   char   *   m_p,   int   m_length   )  
  {  
  //.....  
  return   TRUE;  
  }  
  如还你这样的定义,直接调用A(p,n);(但A的定义要在CMyClass::My_Thrd之前)而不是pSock->A(p,n);  
   
  Top

6 楼Wilbur2006()回复于 2006-03-06 10:19:34 得分 0

晕     写错了很多    
   
  我重新写一下  
   
  UINT   CMyClass::My_Thrd(void   *pParam)  
  {  
   
    CMyClass   *   pMyObj   =   (   CMyClass   *)   pParam;  
   
        //char   *p;  
        //int   n;      
  pMyObj->A(p,n);  
   
   
            return   1;  
   
   
  }  
   
  那么对于A函数   有什么要求吗?  
  class     CMyClass  
  {  
  protected:  
   
  int         Oh;  
  public:  
  BOOL   A(   char   *   m_p,   int     m_length   );  
   
  };  
  我把A定义成这样   它报错说是本地函数定义是非法的    
  BOOL     CMyClass::A   (   char   *   m_p,   int   m_length   )  
  {  
  //.....  
   
  return   TRUE;  
   
   
  }  
   
   
  另外   A函数里面对Oh进行了操作     同时A也启动了一个线程     对Oh进行操作  
   
  可能是同步的问题吗?  
   
  应该怎么互斥呢?Top

7 楼Wilbur2006()回复于 2006-03-06 10:25:33 得分 0

up  
   
  慌啊  
  Top

8 楼cyblueboy83(爱情白痴—电脑迷)回复于 2006-03-06 10:32:11 得分 10

帮你顶  
  Top

9 楼Wilbur2006()回复于 2006-03-06 10:52:01 得分 0

发现斑竹把广告贴删了    
   
  斑竹老大   既然你进来了   就帮忙解答一下啊       -_-Top

10 楼yinzhaohui(努力)回复于 2006-03-09 13:02:55 得分 0

不应当是同步问题也不是互斥问题,因为你编释都没有过,看那儿有语法错误,  
  BOOL   CMyClass::A   (   char   *   m_p,   int   m_length   )  
  A后的空格不要  
  Top

相关问题

  • 请问如何在副线程中调用主线程中的函数?
  • 线程函数调用自身可以吗?
  • 线程中如何调用窗体的其他函数?
  • 线程的基本问题,函数,变量的调用
  • 线程如何调用自定义的函数过程?
  • 线程启动函数中调用变量的问题
  • 关于多线程调用同一函数的问题
  • 为什么在线程中调用 ExcelApp->CreateDispatch("excel.application")函数失败?
  • 关于线程中Synchronize()函数的调用问题!
  • 求解:子线程调用CMainFrame的函数问题?

关键词

  • 函数
  • 线程
  • cmyclass
  • psock
  • pmyobj
  • 调用
  • 定义
  • thrd
  • pparam
  • 要求

得分解答快速导航

  • 帖主:Wilbur2006
  • lzzqqq
  • striking
  • alfwolf
  • yinzhaohui
  • cyblueboy83

相关链接

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

广告也精彩

反馈

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