欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

[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

引入线程库之后再编译就不会出现报错了。