当时为了测试类的静态成员函数在多线程的工作机制以及运行过程中强制结束线程,
自己写了个小程序。
直接强制结束还是很危险的,很可能由于互斥锁而导致死锁。
还可能会导致线程的资源无法释放,存在内存垃圾。
OK。贴一下,供需要的人参考
自己写了个小程序。
直接强制结束还是很危险的,很可能由于互斥锁而导致死锁。
还可能会导致线程的资源无法释放,存在内存垃圾。
OK。贴一下,供需要的人参考
//结论:类静态成员函数可以被多线程多次启用,互不干涉
//运行过程中可以强制结束线程,但是要慎用!很可能由于互斥锁导致死锁
//网上说用该方法还可能导致资源无法正常释放(可能也是由于互斥问题)
#include
#include
using namespace std;
class A;
struct Trans
{
Trans()
: id( 0 )
, pFather( 0 )
{}
int id;
A* pFather;
};
class A
{
public:
A( int id )
: m_Id( id )
, m_TaskHandler( 0 )
{
}
~A()
{
coutid;
A* p = pdata->pFather;
for(int i=0;iFinish();
return 0;
}
private:
int m_Id;
HANDLE m_TaskHandler;
Trans m_Data;
};
void main()
{
A a(1);
A b(2);
a.Run();
b.Run();
Sleep( 200 );
a.ForceStop();
system("pause");
}