VC 创建一个工作线程 创建一个工作线程我知道有两个步骤:(1)实现线程函数(2)开始线程。情况是这样:我在一个类A里面要启动一个线程,我现在1、实现线程函数myfunc,这个线程函数定义在哪里。2)开始线程,怎么开始。着急啊。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、这个线程函数可以声明在你的类A中,例如: static DWORD WINAPI myfunc(LPVOID pv);实现: DWORD WINAPI A::myfunc(LPVOID pv){}2、用如下函数开始 DWORD threadid; m_hThread = CreateThread( //HANDLE m_hThread; NULL, 0, A::myfunc, this, 0, &threadid); if (!m_hThread) { return FALSE; }3、强制关闭线程 void CloseTrainThread() { if(m_hThread==0) return; HANDLE hThread = (HANDLE)InterlockedExchangePointer(&m_hThread, 0); if (hThread) { WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); } }; C++程序_beginthreadex();线程函数:unsigned __stdcall ThreadProc(void*)MFC程序AfxBeginThread();线程函数:UINT __cdecl ThreadProc(LPVOID) 线程函数一定得是STATIC的吗? 定义在类里面可以吗?还有void CloseTrainThread() {if(m_hThread==0)return; HANDLE hThread = (HANDLE)InterlockedExchangePointer(&m_hThread, 0); if (hThread) { WaitForSingleObject(hThread, INFINITE); CloseHandle(hThread); } };定义在哪里啊?在A里面吗? 一楼里说:static DWORD WINAPI myfunc(LPVOID pv);实现: DWORD WINAPI A::myfunc(LPVOID pv){}这个线程函数可以放在类A里面吗? 线程函数一定得是STATIC的吗?不是STATIC成员函数可以吗? A类里面,这样容易访问m_hThread这个类成员变量。 线程函数一定得是STATIC的吗?不是STATIC成员函数,是普通的成员函数,可以吗? 6楼已有解答。线程函数中要访问类成员变量,可以通过传入的参数实现(CreateThread()函数中已经传入了this指针)。DWORD WINAPI A::myfunc(LPVOID pv){A* pA=(A*)pv;} 你可以看看一些VC或者C++的基础视频教程,多线程肯定是都有讲到的。可以看看孙鑫的,这个流传挺广的或者看看 c语言也能干大事 里面的多线程开发(20节)一节,也有讲到,这个在youku里面好像就有 MFC程序AfxBeginThread(); Picture控件何加上滚动条? new/delete的问题 求救,请问怎么连接带密码的access数据库? 在程序中使用了线程,关闭程序后CPU张到100% 小菜的VC群 欢迎DX和菜菜 CClientDC出现异常 <<<< 简单问题 -- 赶快进入 >>>> 请问各位高手如何禁止修改IP地址?? 怎么来看MSDN呢? 有没有办法将一个自己派生的View加到一个对话框上面呢?请教高手 初学VC,我想问一下,ApplicationEvents控件在哪里加 关于组框的使用
static DWORD WINAPI myfunc(LPVOID pv);
实现:
DWORD WINAPI A::myfunc(LPVOID pv)
{
}
2、用如下函数开始
DWORD threadid;
m_hThread = CreateThread( //HANDLE m_hThread;
NULL,
0,
A::myfunc,
this,
0,
&threadid);
if (!m_hThread) {
return FALSE;
}
3、强制关闭线程
void CloseTrainThread() {
if(m_hThread==0)
return;
HANDLE hThread = (HANDLE)InterlockedExchangePointer(&m_hThread, 0);
if (hThread) {
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
}
};
_beginthreadex();
线程函数:unsigned __stdcall ThreadProc(void*)
MFC程序
AfxBeginThread();
线程函数:UINT __cdecl ThreadProc(LPVOID)
还有
void CloseTrainThread() {
if(m_hThread==0)
return;
HANDLE hThread = (HANDLE)InterlockedExchangePointer(&m_hThread, 0);
if (hThread) {
WaitForSingleObject(hThread, INFINITE);
CloseHandle(hThread);
}
};定义在哪里啊?在A里面吗?
实现:
DWORD WINAPI A::myfunc(LPVOID pv)
{
}
这个线程函数可以放在类A里面吗?
不是STATIC成员函数可以吗?
不是STATIC成员函数,是普通的成员函数,可以吗?
线程函数中要访问类成员变量,可以通过传入的参数实现(CreateThread()函数中已经传入了this指针)。
DWORD WINAPI A::myfunc(LPVOID pv)
{
A* pA=(A*)pv;
}
可以看看孙鑫的,这个流传挺广的
或者看看 c语言也能干大事 里面的多线程开发(20节)一节,也有讲到,这个在youku里面好像就有
AfxBeginThread();