线程函数里调用的函数有什么要求吗 (立结)
比如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




