【Linux】多线程_1

文章目录


九、多线程

1. 线程概念

我们知道:进程 = 内核数据结构 + 进程代码和数据 。那什么是线程呢?线程是进程内部的一个执行分支。一个进程内部可以有多个执行流(内核数据结构),这些执行流都是线程。线程是CPU调度的基本单位。

2. 线程的控制

pthread_create函数可以创建一个线程。并且编译时需要软链接 pthread 这个库 。
Makefile:

cpp 复制代码
test_thread: testThread.cc
	g++ -o $@ $^ -std=c++11 -lpthread
.PHONY: clean
clean:
	rm -f test_thread

test_Thread:

cpp 复制代码
#include <iostream>
#include <pthread.h>
#include <unistd.h>
using namespace std;

// 新线程
void* newpthreadrun(void* arg)
{
    while (true)
    {
        cout << "I am newpthreadrun thread" << endl;
        sleep(1);
    }
}

int main()
{
    pthread_t tid;
    pthread_create(&tid, nullptr, newpthreadrun, nullptr);

    // main 线程
    while (true)
    {
        cout << "I am main thread" << endl;
        sleep(1);
    }

    return 0;
}

并且此时只有一个进程在执行:

刚跟我们说了,线程是CPU调度的基本单位,但是CPU怎么区分一个进程里的线程呢?线程有自己的线程id(LWP),CPU调度其实是根据线程id来进行调度的。


未完待续

相关推荐
水瓶_bxt9 小时前
在 Linux 系统中安装新字体
linux·运维·服务器
白云千载尽9 小时前
基础命令学习之ps 与 pkill 与 nohup 与 2>&1 &
服务器·学习·远程
春日见9 小时前
虚拟机vmware linux的piix4_smbus : SMBus Host Controller not enabled
linux·运维·服务器
AttaGain9 小时前
Ubuntu24中ISO文件制作工具
linux·ubuntu
代码游侠9 小时前
学习笔记——线程
linux·运维·开发语言·笔记·学习·算法
怪只怪满眼尽是人间烟火9 小时前
离线环境下部署区块链FISCO BCOS v2.11.0
linux·运维·区块链
努力努力再努力wz10 小时前
【Linux网络系列】:网络+网络编程(UDPsocket+TCPsocket)
java·linux·c语言·开发语言·数据结构·c++·centos
姬嘉晗-19期-河北工职大10 小时前
在虚拟机的 Linux 系统(CentOS 7)中搭建一个「虚拟机本地网站」
linux·运维·centos
风行男孩10 小时前
stm32基础学习——按键的使用
stm32·嵌入式硬件·学习
hkhkhkhkh12310 小时前
Linux 内核三大核心结构体详解(驱动开发视角)
linux·数据结构·驱动开发·字符设备