社区
进程/线程/DLL
帖子详情
CreateThread中的线程函数可以是一个类的函数吗?
rushing
2002-03-18 12:43:46
在类的内部创建线程,线程函数也是类的一个函数。
但是编译时却出错。
如果把线程函数放在类外面,就没事了。
请高手指教。
...全文
234
25
打赏
收藏
CreateThread中的线程函数可以是一个类的函数吗?
在类的内部创建线程,线程函数也是类的一个函数。 但是编译时却出错。 如果把线程函数放在类外面,就没事了。 请高手指教。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
scklotz
2002-03-18
打赏
举报
回复
csdn 怎么使用这么变态的字体。
scklotz
2002-03-18
打赏
举报
回复
必须使用静态成员函数(static)来做线程函数。
-------^^^^^^^^^^^--------------------
LLnju
2002-03-18
打赏
举报
回复
同意 mahongxi(烤鸡翅膀)(0.618)
mahongxi
2002-03-18
打赏
举报
回复
因为线程函数要求特定的函数形式参数,而你的普通成员函数往往函有一个隐形参数CYourClass * this,所以普通的成员函数是不行的,
如果一定要以成员函数形式出现,在前面加上static
robothn
2002-03-18
打赏
举报
回复
少定义一个static func,好
调用时
AfxBeginThread(aaa, this);
chdan
2002-03-18
打赏
举报
回复
//.h
class CMyView:public CFormView
{
private:
static UINT aaa(LPVOID pInfo); // 声明 declaration
.................
}
//.cpp
UINT CMyView::aaa(LPVOID pInfo); // 定义 definition
//实现
UINT CMyView::aaa(LPVOID pInfo)
{ // 用pInfo传递CMyView一个实例指针
CMyView* pThis = (CMyView*)pInfo;
pThis->bbb();
..............
}
rushing
2002-03-18
打赏
举报
回复
.h中还有一个成员变量
int timeout;
static void aaa();
static void bbb();
.cpp成员函数调用这个变量
void aaa()
{
bbb();
}
void bbb()
{
timeout++;
}
inside1
2002-03-18
打赏
举报
回复
再完整些
robothn
2002-03-18
打赏
举报
回复
//.h
private:
static HGLOBAL s_hImageBuffer;
static HANDLE s_hEventKill;
//.cpp
//一样要先Definition
HANDLE CMyView::s_hEventKill;
HGLOBAL CMyView::s_hImageBuffer;//Buffer for hold image
//然后再用
robothn
2002-03-18
打赏
举报
回复
帖出来src
robothn
2002-03-18
打赏
举报
回复
是用到的全局变量要static,局部变量就算了
rushing
2002-03-18
打赏
举报
回复
用static int成员变量,结果出错。
robothn
2002-03-18
打赏
举报
回复
是,调用的函数也要static
rushing
2002-03-18
打赏
举报
回复
是否里面用到的变量也为static?
rushing
2002-03-18
打赏
举报
回复
在定义类的时候,应该还没有实例。
rushing
2002-03-18
打赏
举报
回复
用雷鸟的办法编译可以通过。
但是在这个static void aaa()中调用其他成员函数时出错。
void aaa()
{
bbb();
}
cct8
2002-03-18
打赏
举报
回复
用robothn(雷鸟) 的方法就可以了。
也可以用非static函数,条件是,你一定要传递一个实例的地址给该函数
比如一个成员函数:void aaa(void)。
你创建线程时,传递一个该类的某个实例的地址作为参数。
rushing
2002-03-18
打赏
举报
回复
在static成员函数中调用的函数是否都应为static函数?
robothn
2002-03-18
打赏
举报
回复
//.h
class CMyView:public CFormView
{
private:
static UINT aaa(LPVOID pInfo); // 声明 declaration
.................
}
//.cpp
UINT CMyView::aaa(LPVOID pInfo); // 定义 definition
//实现
UINT CMyView::aaa(LPVOID pInfo)
{
..............
}
rushing
2002-03-18
打赏
举报
回复
Frank_Xu()
不懂。
加载更多回复(5)
多
线程
与单
线程
的对比(采用
Create
Thread
)
多
线程
实例,采用
Create
Thread
函数
。 (1) 该程序还将和单
线程
做对比。 (2) 由于给
线程
的
函数
传递了多个参数,所以采用结构体的方式传递参数。 (3) 为了演示效果,采用了比较耗时的打点处理。
MFC创建用户界面
线程
方法2
要使用`
Create
Thread
`创建用户界面
线程
,首先需要定义
一个
线程
函数
,该
函数
将作为新
线程
的入口点。
线程
函数
应具有`LP
THREAD
_START_ROUTINE`
类
型,即`DWORD WINAPI
Thread
Proc(LPVOID lpParam)`的形式。在这个
函数
中
...
新编Windows_API_参考大全(真正完整版)
本书
中
的PDF文档很可能是按章节组织的,每章深入
一个
主题,从基本概念到高级用法,逐步引导读者探索Windows API的广阔世界。对于初学者,可以从基础的系统服务和UI部分入手;而对于有经验的开发者,深入研究网络编程...
使用
Create
Thread
函数
创建
线程
线程
是进程
中
的
一个
实体,是被系统独立调度和分派的基本单位。
一个
进程可以拥有多个
线程
,但是
一个
线程
必须有
一个
...在C/C++
中
可以通过
Create
Thread
函数
在进程
中
创建
线程
,
函数
的具体格式如下: HANDLE
Create
Thread
Create
Thread
给
线程
函数
传递的参数
Create
Thread
给
线程
函数
传递的参数
Create
Thread
给
线程
函数
传递的参数 HANDLE WINAPI
Create
Thread
( __in_opt LPSECURITY_ATTRIBUTES lp
Thread
Attributes, // 指向SECURITY_...
进程/线程/DLL
15,466
社区成员
49,169
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章