基本上我有一个类,它是instincable(不是静态的)。基本上我希望班级能够生成自己的线程并管理自己的东西。我不想为每个我创建的实例进行全局回调,这对我来说似乎并不干净。做我想做的事的正确方法是什么?如果我尝试将threadproc传递给CreateThread,并且它是来自类实例的proc,编译器会说我不能这样做。什么是实现我想要的最好方式?谢谢线程处理一个instancable类?
0
A
回答
0
class Obj
{
static ULONG WINAPI ThreadProc(void* p)
{
Obj* pThis = (Obj*)p;
... do stuff ...
return 0;
}
void StartMemberThread()
{
CreateThread(... ThreadProc, this, ...);
}
};
最棘手的部分是确保线程不使用pThis后对象消失。
+0
我见过do-while循环,但从来没有做过什么。 – 2015-11-12 13:06:30
0
你想要做的是创建一个静态成员方法,反过来调用threadproc成员。它需要一个指向类实例的指针来进行该调用,因此您需要将(this)作为(void *)参数传递给CreateThread。
0
为什么在使用简单的跨平台解决方案(如boost::thread库)时使用WIN32线程?这完全消除了你的问题。但是,如果您使用WIN32(或pthreads),则可以指定一个应该传递给线程例程的void *参数。所以,void *对象可以是一个指向类的指针;只需将其重新转换为线程例程中的正确类型即可。一旦将void *转换回类型化指针,就可以调用该对象的成员函数。
P.S.这个词是“可实例化”的。
相关问题
- 1. 创建一个类来处理线程
- 2. 的Java如何处理一个线程
- 3. ExecuterService停止处理两个线程中的一个线程
- 4. 试图处理一个类中的线程池
- 5. 线程处理
- 6. 处理线程
- 7. 异常在另一个线程处理创建另一个线程
- 8. 正确处理线程的类
- 9. 同时线程的图像处理类
- 10. 在线程中处理任务的类
- 11. 如何处理具有多个线程的文件,以便每个文件仅由一个线程处理
- 12. 多线程处理?
- 13. IOCP线程处理
- 14. 多线程处理
- 15. Java线程处理
- 16. TWebModule处理程序中产生一个新的线程/进程
- 17. 处置另一个线程
- 18. 在一个线程池管理线程
- 19. Loopers - 处理程序 - 线程
- 20. 由java线程处理的多个任务延迟了另一个java线程
- 21. 处理一类
- 22. 如何在线程中处理线程?
- 23. 处理多线程的线程
- 24. 在Android中创建一个内部线程处理程序
- 25. 一个线程不响应,而应用程序处理
- 26. 如何从处理程序启动一个Intent或线程?
- 27. 在现有线程的uncaughtexception处理程序中启动一个新线程
- 28. 一个ajax处理程序或多个处理程序?
- 29. 同一种JVMTI EVENT由同一个线程处理?
- 30. 使用10个线程处理数组
不要重新发明轮子,查看现有库的来源,如boost :: thread,Qt,ACE等。这已经完成了很多次。 – 2010-06-02 02:23:11