_beginthreadex 线程 函数 解决假死

.h文件中添加:
public:
HANDLE Exit_CS;

.cpp文件构造函数添加:
A::A(CWnd* pParent /*=NULL*/)
: CDialog(A::IDD, pParent)
{
//{{AFX_DATA_INIT(A)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
Exit_CS = ::CreateEvent( NULL, TRUE, FALSE, NULL );
}

析构函数中添加:
A::~A()
{
::SetEvent( Exit_CS );
}



如果你想把
int A::Save(CString cs) //有假死
{
//内容
}
Save函数线程化


可以
在.h文件中添加:
UINT WINAPI Deal_Save(LPVOID pSrt);声明
在.cpp文件中这样改:
int flagSort == 0;//连续点击Save按钮,保证只有一次线程执行
int A::Save(CString cs)
{
if(flagSort == 0)
{
flagSort = 1;
UINT uiThreadID;
HANDLE hThread = (HANDLE)_beginthreadex( NULL, 0, Deal_Save, this, 0, &uiThreadID );
if(hThread)
{
::CloseHandle( hThread );
}
}
}
UINT WINAPI A::Deal_Save(LPVOID pSrt)
{
*psort = (A*)pSrt;
//内容
//(这时类内的成员函数、成员变量,前面都要加上 psort  ->  ,函数里的所有for(int j.....)循环内,都加上
// if ( j != 0 && ( j % 15 == 0 )) //15可变
// {
// WaitForSingleObject( psort->Exit_CS, 1 );//1可变
// }
//)
flagSort = 0;
return 0;
}

最后,学的不精,欢迎高手指教


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值