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


未完待续

相关推荐
aWty_5 分钟前
实分析入门(5)--确界
学习
zhangrelay9 分钟前
三分钟云课实践速通--C/C++程序设计--
linux·c语言·c++·笔记·学习·ubuntu
xuhaoyu_cpp_java22 分钟前
单调栈(算法)
java·数据结构·经验分享·笔记·学习·算法
Max_uuc29 分钟前
【调度心法】别用 Mutex 制造“人质危机”!撕碎互斥锁的防御幻觉,论优先级反转与火星探测器的史诗级瘫痪
linux·运维·制造
孙同学_29 分钟前
【Linux篇】NTA机制与网络地址转换原理详解
linux·网络·智能路由器
小趴菜要进步35 分钟前
Kali/Linux 更改国内镜像源
linux·运维·服务器
可爱の小公举40 分钟前
Redis面试高频考点全解析
人工智能·学习·职场和发展·ai编程
lightqjx41 分钟前
【前端】前端学习三之初识JavaScript
前端·javascript·学习
cookies_s_s1 小时前
C++ 内存模型与无锁编程:从底层原理到实战
linux·服务器·开发语言·c++
●VON1 小时前
猫咪专注 CatFocus 技术博客:一款鸿蒙原生自律计时工具的设计与实现
学习·华为·harmonyos·von·猫咪专注