首页
社区
课程
招聘
[求助]关于自编写线程类
发表于: 2006-11-23 17:30 5275

[求助]关于自编写线程类

2006-11-23 17:30
5275

有人独立写过线程类吗?

我在写一个多线程管理的类,里面需要建立线程,我想从对象内部建立线程,线程函数是对象的私有成员函数,可是在CreateThread时始终无法成功,不知是线程函数声明的问题还是类机制自我限制的问题。

有朋友对此有经验吗?  希望不吝赐教~。~

建议我用别的比如MFC的线程类的朋友就表发言了。


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 7
支持
分享
最新回复 (4)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
//thread.h
#pragma once

class CThreadTest
{
public:
        CThreadTest(void);
        ~CThreadTest(void);

public:
        unsigned long aaa();

private:
        static unsigned long __stdcall bbb(void *pParam);

public:
        unsigned long m_dwData;
        unsigned long m_dwTid;
        void*        m_hThread;
};

//thread.cpp
#include "thread.h"
#include <windows.h>

CThreadTest::CThreadTest(void)
{
}

CThreadTest::~CThreadTest(void)
{

}

unsigned long __stdcall CThreadTest::bbb(LPVOID pParam)
{
        CThreadTest* ccc = (CThreadTest*)pParam;
        ccc->m_dwData = 12345678;
        return 0;
}

unsigned long CThreadTest::aaa()
{
        m_hThread = CreateThread(NULL, 0, bbb, this, 0, &m_dwTid);
        WaitForSingleObject(m_hThread, INFINITE);
        return m_dwData;
}

//test.cpp
#include <windows.h>
#include "thread.h"

void main()
{
        CThreadTest* test = new CThreadTest;
        DWORD a = test->aaa();
}
2006-11-23 20:19
0
雪    币: 216
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢。

自己卡在这句声明上
static unsigned long __stdcall bbb(void *pParam);

static和__stdcall缺一不可

有空的话,不吝赐教下缘由

再次感谢
2006-11-24 09:26
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习中................................
2006-11-24 13:31
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
问题出在bbb的类型上把
bbb是一个类成员函数名,有CThreadTest::修饰的函数指针
及应该是下面这样的一个指针
unsigned long __stdcall CThreadTest::(*)(void *)
而CreateThread(...)函数需要的是unsigned long __stdcall (*)(void *)指针所以类型不匹配吧
2006-11-27 21:27
0
游客
登录 | 注册 方可回帖
返回
//