_beginthreadex 线程 函数 解决假死
来源:互联网 发布:linux源码怎么看 知乎 编辑:程序博客网 时间:2024/04/29 05:04
.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)
{
A *psort = (A*)pSrt;
//内容
//(这时类内的成员函数、成员变量,前面都要加上 psort -> ,函数里的所有for(int j.....)循环内,都加上
// if ( j != 0 && ( j % 15 == 0 )) //15可变
// {
// WaitForSingleObject( psort->Exit_CS, 1 );//1可变
// }
//)
flagSort = 0;
return 0;
}
最后,学的不精,欢迎高手指教
- _beginthreadex 线程 函数 解决假死
- -创建线程的另一个函数_beginthreadex
- CreateThread, AfxBeginThread,_beginthread, _beginthreadex线程函数区别
- _beginthreadex创建线程函数的使用
- 谈.Net委托与线程——解决窗体假死
- 谈.Net委托与线程——解决窗体假死
- 谈.Net委托与线程——解决窗体假死
- 谈.Net委托与线程——解决窗体假死
- 谈.Net委托与线程——解决窗体假死
- 谈.Net委托与线程——解决窗体假死
- 谈.Net委托与线程——解决窗体假死
- 谈.Net委托与线程——解决窗体假死
- 谈.Net委托与线程——解决窗体假死
- 谈.Net委托与线程——解决窗体假死
- windows笔记-创建线程的另一个函数_beginthreadex
- windows笔记-创建线程的另一个函数_beginthreadex
- 创建线程函数区别CreateThraed/_beginthreadex/AfxBeginThread(重点理解)
- 创建线程函数区别CreateThraed/_beginthreadex/AfxBeginThread(重点理解)
- SecureCRT 配置方法
- 一位女性程序员的故事
- Android学习笔记10
- KVO/KVC
- android Bitmap 相关
- _beginthreadex 线程 函数 解决假死
- Android4.0.1 模拟器内核 最新下载地址及编译步骤
- Jquery主要控件的取值、赋值,包括textbox,button,lable,radio,checkbox,selected
- 创业公司感悟录之十个提醒
- 运算符
- 常用几种禁止修改输入框的方法
- mmc驱动工作流程
- Android Audio System 之一 Audio (1) AudioTrack如何与AudioFlinger交换音频数据
- 如何使用C#与XML创建动态分层菜单