在JAVA中,实现多线程有两种方式,一种是继承自Thread类,一种是Runnable,在MFC中也有CWinThread类,但是我们如何利用已有的多线程的机制来实现一个多线程类呢?
在Windows 中使用C语言做多线程编程,我们可以使用两个函数,一个是CreateThread(),该函数是一个Win32 API函数,另一个是_beginthread(),该函数是一个CRT(C Run-Time)函数,二者在使用上没有太大的区别。在本文当中,我将选择使用_beginthread(),需要包含process.h文件。先讲一下这个函数的原型是
uintptr_t _beginthread(
void( __cdecl *start_address )( void * ),
unsigned stack_size,
void *arglist
);
第一个参数指定线程的起始位置;第二个参数指定堆栈的大小,默认可以使用0;第三个参数指定传给start_address的参数列表。按照JAVA中对于多线程类的定义,对于我在C++中实现的多线程类,我将采用下面的声明:
class Thread
{
public:
void start();
virtual void run();
}
用户只要继承该类并重写vo