能力值:
( LV4,RANK:50 )
|
-
-
2 楼
这是C++的基本知识。
如果你是希望每个对象都有自己的线程函数,那把线程函数参数化即可。
更高阶一点的,可以使用函数对象封装线程函数,你可以参考一下网上的相关资料,或者boost库中线程类的实现。
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
能详细讲解一下马?
|
能力值:
( LV4,RANK:50 )
|
-
-
4 楼
这真的是C++的基础知识,
1. 首先从最简单的说起吧,
typedef DWORD (WINAPI *PTHREAD)(void*);
class A
{
public:
A( PTHREAD p ) : p_(p) {}
DWORD Start()
{
return CreateThread( .... )
}
private:
PTHREAD P_;
};
这样一来,每个对象可以拥有不同的线程函数,当然也可以共享相同的线程函数。
A a( ThreadProc1 ), b( ThreadProc2 ), c(ThreadProc1 );
2. 复杂一点的,上网搜索 C++实现线程类。
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
这么做相当于把线程的起始地址部分抛在封装对象外面,如此这般与使用winapi又有何区别?
|
能力值:
( LV8,RANK:120 )
|
-
-
6 楼
这样你满意不
class A
{
public:
A()
{
hThread = CreateThread(...,Proc,...);
}
static DWORD __stdcall Proc(LPVOID lpParam);
{
this =lpParam;
this->run();
}
void run();
private:
HANDLE hThread;
};
int main()
{
A tgA,tgB;
}
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
这个看你封装的目的是什么。一般来说,简化使用是比较主要也是重要的目的。API参数很多,很繁,使用class则很简单。
另外,不过是个成员指针,在构造函数时初始化有何不妥呢?按你的说法,构造函数不能有参数了,还有,难道C++中不能使用全局函数?
|
能力值:
( LV4,RANK:50 )
|
-
-
8 楼
|
|
|