游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5349|回复: 22

线程创建问题,懂的帮下忙

[复制链接]

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
发表于 2004-12-17 15:16:00 | 显示全部楼层 |阅读模式
在类里面创建线程是不是只能用静态线程函数啊?如果我要在类里面使用非静态的线程函数该怎么做?急求会的帮下忙 [em4]

3

主题

5

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2004-12-17 15:34:00 | 显示全部楼层

Re:线程创建问题,懂的帮下忙

什么意思啊?你要不要把线程函数定义到类里啊?
如果是的话,估计非静态的不行吧?如果仅仅在类的函数里调用线程的话直接调用全局函数就行了。

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2004-12-17 15:53:00 | 显示全部楼层

Re:线程创建问题,懂的帮下忙

我的意思就是在类里创建线程,如果真的只有静态才行,那么那些线程池是怎么做的啊?请指教。我的程序在类外面建线程也可以,但是那样就要麻烦好多啊,而且有的数据是类里面的,调用起来就更麻烦了

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2004-12-17 16:16:00 | 显示全部楼层

Re:线程创建问题,懂的帮下忙

线程池的线程是多个,函数只有一个

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2004-12-17 17:11:00 | 显示全部楼层

Re:线程创建问题,懂的帮下忙

你是想让一个线程运行一个类的成员函数,而这个函数又不是静态的,对吧?

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2004-12-17 17:23:00 | 显示全部楼层

Re:线程创建问题,懂的帮下忙

class A
{
        public:
                static void WorkProc(void* pParam);
                void Run(void);
};

void A::WorkProc(void* pParam)
{
        A* pA = (A*)pParam;
        if(pA)
        {
                pA->Run();
        }
}

void A::Run(void)
{
        //爱干什么干什么
}

A a;

void foo(void)
{
        ::CreateThread(NULL,0,A::WorkProc,&a,0,NULL);
}

89

主题

822

帖子

847

积分

高级会员

Rank: 4

积分
847
发表于 2004-12-17 17:54:00 | 显示全部楼层

Re: 线程创建问题,懂的帮下忙

[em2]

哈哈,还是一样的

你要想在那个静态函数里面访问类的成员变量,必须把成员变量也改成静态的

其实还是个Global函数

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2004-12-17 19:01:00 | 显示全部楼层

Re:线程创建问题,懂的帮下忙

在Run里访问成员变量,Run不是静态的

50

主题

244

帖子

319

积分

中级会员

Rank: 3Rank: 3

积分
319
QQ
 楼主| 发表于 2004-12-17 20:42:00 | 显示全部楼层

Re:线程创建问题,懂的帮下忙

谢谢大家了,我去试试ljm的方法。一会来给结果

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2004-12-17 21:13:00 | 显示全部楼层

Re:线程创建问题,懂的帮下忙

不好意思,写错了。
应该是 static DWORD WINAPI WorkProc(void* pParam);
唉,最近有点儿浮躁了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-23 19:09

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表