对于该库的学习和文档资料的整理,我个人把握的主线是以程序实践作为基础,在程序实践的基础上对相关的实现代码进行学习,明确整个库的基本架构层次,学习库的架构设计和库中涉及到的设计思想,以此来提高自己程序结构设计的能力和在代码实现时的设计模式的运用技能。
为了方便对库进行跟踪与调试,我决定在自己部署的ZThread的解决方案中建立两个工程,一个是库生成的工程,一个是test工程,主要是为了测试ZThread的库,方便进行代码跟踪和分析。
具体的工程部署如下:
头文件包含,因为test和zthread在同级目录,所以需要这么设置
库包含目录如下:
依赖库的设置如下:
工程配置完成后,写一段测试代码试一下
#include <iostream>
#include "zthread/Thread.h"
#include "zthread/Runnable.h"
using namespace ZThread;
class aRunnable : public Runnable {
void run() {
std::cout << "Hello from another thread" << std::endl;
}
};
int main() {
try {
// Implictly constructs a Task
Thread t(new aRunnable);
t.wait();
} catch(Synchronization_Exception& e) {
std::cerr << e.what() << std::endl;
}
std::cout << "Hello from the main thread" << std::endl;
// Output:
// Hello from another thread
// Hello from the main thread
return 0;
}
代码可以在Thread.h的头文件中找到,为了更好的看到输出结果我在编译库的时候加入了NDEBUG宏,没有让库的跟踪日志输出,输出结果如下:(wait保证主线程让子线程执行)
整个线程库基本运行OK,后期继续学习补充!