[Linux]:线程控制
最编程
2024-10-18 07:01:46
...
代码演示:
#include <iostream>
#include <unistd.h>
#include <pthread.h>
#include <sys/types.h>
#include <unistd.h>
// 新线程
void *ThreadRoutine(void *arg)
{
const char *threadname = (const char *)arg;
while (true)
{
std::cout << "I am a new thread: " << threadname << ", pid: " << getpid() << std::endl;
sleep(1);
}
}
int main()
{
pthread_t tid;
// 创建线程
pthread_create(&tid, nullptr, ThreadRoutine, (void *)"thread 1");
// 主线程
while (true)
{
std::cout << "I am main thread" << ", pid: " << getpid() << std::endl;
sleep(1);
}
return 0;
}
1.1 引入线程库
当我们直接编译时可以发现报错,明明已经引入了线程相关的头文件,为什么还会找不到该函数呢?
因为Linux没有真正的线程,只有轻量级进程的概念,所以Linux OS只会提供轻量级进程创建的系统调用,不会直接提供线程的创建的接口,Linux的线程是通过pthread原生线程库实现的,所以我们需要在编译选项中引入线程库
Makefile:
testThread:testThread.cc
g++ -o $@ $^ -std=c++11 -lpthread
.PHONY:clean
clean:
rm -f testThread
引入线程库之后再编译就不会出现报错了。
上一篇: 健康生活的重要性