【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来进行调度的。


未完待续

相关推荐
Penguido1 分钟前
解决 VS Code 中 Git 推送报错:ECONNREFUSED vscode-git.sock 与鉴权失败
linux·git·vscode
Han.miracle6 分钟前
Lombok 构造相关核心注解全解析
java·linux·算法
客卿12319 分钟前
岛屿问题--bfs的应用--二维网络题目学习
学习·算法·宽度优先
北岛寒沫22 分钟前
北京大学国家发展研究院 中国经济专题 课程笔记(第一课 绪论)
经验分享·笔记·学习
爱丽_26 分钟前
Linux 安装 MySQL 与远程连接排障(yum 方案)
linux·运维·mysql
王的宝库34 分钟前
Go 语言:结构体:定义、初始化、方法、组合、Tag、对齐
开发语言·后端·学习·golang
啊我不会诶44 分钟前
2025 北京市大学生程序设计竞赛暨“小米杯”全国邀请赛
c++·学习·算法
Felven1 小时前
麒麟信安系统忘记root密码解决说明
linux·运维·服务器
IMPYLH1 小时前
Linux 的 base64 命令
linux·运维·服务器·bash·shell
程序员果子1 小时前
Nginx 从入门到精通:全面解析与实战指南
linux·运维·服务器·nginx