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


未完待续

相关推荐
筵陌5 分钟前
Linux网络传输层协议TCP
linux·网络·tcp/ip
HIT_Weston8 分钟前
132、【Ubuntu】【Hugo】搜索功能异常(问题解决)(二)
linux·运维·ubuntu
a11177613 分钟前
Live2D 虚拟主播软件(开源Python)
java·linux·运维
jy2582095600015 分钟前
Linux系统离线部署MySQL详细教程(带每步骤图文教程)
linux·mysql·adb
qq_4335021819 分钟前
收集了一些免费视频背景映月素材网站分享记录
经验分享·学习·音视频·生活
前路不黑暗@32 分钟前
Java项目:Java脚手架项目的通用组件的封装(七)
java·开发语言·spring boot·后端·学习·spring cloud·maven
Aliex_git34 分钟前
Gitlab Runner 配置实践
笔记·学习·ci/cd·gitlab
●VON34 分钟前
HarmonyOS应用开发实战(基础篇)Day05-《常见布局Row和Column》
学习·华为·harmonyos·鸿蒙·von
旖旎夜光39 分钟前
Linux(14)(上)
linux·网络
海盗猫鸥1 小时前
Linux基础指令2
linux·c语言