今天开始学写boost线程库,该程序是一个最基本的使用boost线程库的测试程序,开发环境是linux环境。
测试源程序如下,该程序实现如下功能:
1、编译运行后程序启动一个线程每隔一秒打印一个helloworld,主线程每隔一秒打印一个main,程序简单已经添加注释
/*
*File:test.cpp
*Author:yingxianFei
*Date:2014-2-19
*Description:linux下的boost线程库测试程序
*/
#include <boost/thread/thread.hpp>
#include <iostream>
#include <unistd.h>
using namespace boost;
using namespace std;
/*
*Function:hello
*Description:一个用于每隔一秒打印hello,world的函数
*Input:none
*Return:none
*/
void hello()
{
while(1) {
std::cout<<"hello,world"<<std::endl;
sleep(1);
}
}
/*
*
*Function:main
*Description:主函数
*Input:none
*Return: 正常时返回0,错误时返回1
*/
int main(void)
{
boost::thread th(hello);
// th.detach();//分派任务,使用后新线程与主线程一起运行
th.join();//执行子线程,会阻塞主线程
while(1) {
std::cout <<"main"<<std::endl;
sleep(1);
}
return 0;
}
2、makeflie文件如下:
小弟初学所以编程很不规范,主要只是自己笔记使用,偌大牛见到勿笑,还望能多多指教,我的boost头文件在/usr/local/boost/x86/include目录下,库文件在/usr/local/boost/x86/lib目录下,Makefile内容如下
CC = g++
CFLAG += -Wall
CINCLUDE = -I/usr/local/boost/x86/include
CLIB = -L/usr/local/boost/x86/lib
CLD = -lboost_system -lboost_thread
SRCS := \
test.cpp
TARGET:=test
all:$(TARGET)
$(TARGET):$(SRCS)
$(CC) $(CFLAG) $(CINCLUDE) $(CLIB) $(CLD) $^ -o $@
.PHONY:clean
clean:
-@rm $(TARGET)
3、执行make编译程序,编译完成后运行可执行文件测试。