Unix/Linux创建一个线程
Unix/Linux创建一个线程 使用Unix/Linux的系统接口pthread_create()函数创建一个新的线程,主线程和新线程一直输出消息。注意用g++编译的时候要加 -lpthread,即需要链接线程库。源代码如下:#include#includ
·
Unix/Linux创建一个线程
使用Unix/Linux的系统接口pthread_create()函数创建一个新的线程,主线程和新线程一直输出消息。注意用g++编译的时候要加 -lpthread,即需要链接线程库。源代码如下:
#include <iostream>
#include <pthread.h>
#include <string.h>
#include <stdio.h>
using namespace std;
pthread_t ntid;
void printIds(const char * str)
{
pid_t pid;
pthread_t tid;
pid = getpid();
tid = pthread_self();
printf("%s pid %u tid %u (0x%x)\n", str, (unsigned int)pid, (unsigned int)tid, (unsigned int)tid);
}
void * thread_fun(void * arg)
{
printIds("new thread: ");
while (true)
{
sleep(2);
cout << "new thread runing." << endl;
}
return (void *)0;
}
int main()
{
int err;
err = pthread_create(&ntid, NULL, thread_fun, NULL);
if (err != 0)
{
printf("%s\n", strerror(err));
}
printIds("main thread: ");
while (true)
{
sleep(2);
cout << "main thread runing." << endl;
}
return 0;
}
附上makefile文件的内容
MAIN_TARGET=../ThreadCreate
SRC_PATH=../src
OBJ_PATH=../obj
FILE_1=main.cpp
SRC_1=$(SRC_PATH)/$(FILE_1)
OBJ_1=$(OBJ_PATH)/$(FILE_1:.cpp=.o)
CXX=g++
CXXFLAG=-g -D_DEBUG
THREAD_LIB=pthread
LIBS_PATH=-l$(THREAD_LIB)
INCLUDE_PATH=-I$(SRC_PATH)
COMPILE_CPP=$(CXX) $(CXXFLAG) $(INCLUDE_PATH) -o $@ -c $?
COMPILE_LINK=$(CXX) $(CXXFLAG) $(INCLUDE_PATH) $(LIBS_PATH) -o $@
OBJS=$(OBJ_1)
$(MAIN_TARGET)::$(OBJS)
$(COMPILE_LINK) $(OBJS)
$(OBJ_1)::$(SRC_1)
$(COMPILE_CPP)
PHONY:clean
clean:
rm $(OBJS)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献2条内容
所有评论(0)