到网上下载ZThread-2.3.2
用VS2008编译静态库,新建win32静态库工程CompileZThread,
设置头文件路径../ZThread-2.3.2\include
将src文件夹中的文件(子文件夹不要添加)拷贝到CompileZThread工程文件夹中,并添加到工程中
将src文件夹里的子文件夹vanilla、solaris、win32里的文件也添加到工程中。
在查找预编译头使用时跳过,设置-不使用预编译头
移除 AtomicCount类的两个实现文件,一个在工程目录下,一个咋win32目录下
因为工程目录下的AtomicCount.cxx代码如下,与平台相关的条件编译在下载的源码中已经被注释,直接包含了# include "vanilla/SimpleAtomicCount.cxx",所以AtomicCount的实现文件只留vanilla目录下的SimpleAtomicCount.cxx,其他两个都移除,还有一个在win32目录下,该目录下的实现文件不全,没有实现++,--的前置和后置操作符
测试程序:
#include <iostream>
#include "zthread/Runnable.h"
#include "zthread/PoolExecutor.h"
using namespace ZThread;
using namespace std;
class LiftOff : public Runnable
{
public:
LiftOff(int count, int idn = 0): countDown(count), id(idn) {}
~LiftOff()
{
cout<< id << " competed" <<endl;
}
void run()
{
while (countDown--)
{
cout << id << " : " <<countDown <<endl;
}
cout<<"LiftOff!" <<endl;
}
private:
int countDown;
int id;
};
int _tmain(int argc, _TCHAR* argv[])
{
try
{
for (int i = 0; i < 1; i++)
{
//LiftOff a(10, i);
//Thread t(&a );
Thread t(new LiftOff(5,i));
}
cout <<"Waiting for LiftOff" <<endl;
}
catch (Synchronization_Exception& e)
{
cerr << e.what() <<endl;
}
cin.get();
return 0;
}