实例代码
//相关定义
struct _tagValue
{
int nNum1;
int nNum2;
};
typedef _tagValue Value;
// CMFCApplicationThreadDlg 对话框
UINT myThread(LPVOID lparam)
{
Value * dlg=(Value *)(lparam);
CString str;
str.Format(TEXT("%d %d "),dlg->nNum1,dlg->nNum2);
AfxMessageBox(str);
delete dlg;
return 1;
}启动线程
Value * sValue=new Value;
sValue->nNum1 = 1;
sValue->nNum2 = 2;
AfxBeginThread(myThread,sValue,THREAD_PRIORITY_HIGHEST);1 线程参数不能是单纯的局部变量,否则,有可能在线程运行期间,局部变量被销毁。
2 使用指针new的时候,删除指针必须在线程完成以后进行,一般是在线程中完成删除。
3 使用全局变量也能完成,但就失去了参数的意义。
本文介绍了在C++中如何正确地将参数传递给线程,特别是如何避免局部变量在线程运行过程中被意外销毁的问题,并提供了具体的代码示例。
2653

被折叠的 条评论
为什么被折叠?



