现在的位置: 首页 -> PHP学习 -> linux下线程概念及用C语言实现示例

linux下线程概念及用C语言实现示例

2020-06-11 21:29评论数 13 ⁄ 被浏览 7937 views+

1、线程的状态

线程有5种状态:初始化、可运行、运行中、阻塞、销毁。

image.png

①初始化:创建一个线程。

②可运行:执行完创建工作,线程变进入“可运行”的状态,即等待CPU时间碎片(执行权)。

③运行中:得到CPU执行权后,程序变为“运行中”的状态,此时可以转变为“可运行”的状态(一个时间碎片执行完后),或者“阻塞”的状态(等待网络或者磁盘处理)。

④阻塞:当发生I/O时,就进入了“阻塞”状态。

⑤销毁:线程生命周期结束。


2、c语言pthread_create()

创建线程函数。

image.png


PCB:进程控制块 (Processing Control Block)

它存放着操作系统用于描述进程情况及控制进程运行所需的全部信息。

更多关于PCB的信息:https://blog.csdn.net/Duc_Duke/article/details/98482333 

(深入理解计算机系统) bss段,data段、text段、堆(heap)和栈(stack): https://www.cnblogs.com/yanghong-hnu/p/4705755.html 


ulimit -a查看栈区大小。

image.png


linux和windows下的线程原理是不一样的,linux下的线程就是轻量级的进程,对于内核来说,线程就是进程。


线程相关函数:

(1)创建线程:pthread_create()

(2)退出线程:pthread_exit();


3、线程demo

注意,用gcc命令编译的时候需要带上-lpthread参数。

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <string.h>
#include <pthread.h>

void* myfunc(void* arg)
{
    printf("child thread id: %lu\n", pthread_self());
    return NULL;
}

int main(int argc, char* argv[])
{
    //创建一个子线程
    pthread_t thread_id;
    int res = pthread_create(&thread_id, NULL, myfunc, NULL);
    if (res != 0) {
        printf("error code: %d\n", res);
        printf("error info: %s\n", strerror(res));
        return 0;
    }
    printf("parent thread id: %lu\n", pthread_self());
    //回收线程
    pthread_join(thread_id, NULL);
    return EXIT_SUCCESS;
}


查看线程信息:

Linux/Unix和Windows中多线程的区别:https://blog.csdn.net/QuitePig/article/details/8022875 


4、查看线程

(1) windows下 

image.png


(2) linux下

ps -Lf 进程号


 

文章出自:https://www.daixiaorui.com/read/293.html 本站所有文章,除注明出处外皆为原创,转载请注明本文地址,版权所有。

目前有 13 条评论  @我要评论

  1. 13楼巨化股份途径有同感 : 2023-01-02 11:59:59 评论说: @回复

    gg修改器http://www.98sjj.com/ gg修改器免root版https://www.n012.cn/ gg修改器下载http://www.zavx.cn/

  2. 12楼好听的名字 : 2022-07-03 15:33:22 评论说: @回复

    好听的名字http://www.timdurr.com/

  3. 11楼快乐编程,快乐生活 : 2022-06-25 17:33:29 评论说: @回复

  4. 10楼快乐编程,快乐生活 : 2022-06-25 17:33:28 评论说: @回复

    山高自有客行路,水深自有渡船人。 https://happycodinghappylife.com

  5. 9楼王者荣耀修改器 : 2022-06-18 17:55:34 评论说: @回复

    王者荣耀修改器http://www.98sjj.com/

  6. 8楼王者荣耀修改器 : 2022-06-12 11:26:44 评论说: @回复

    王者荣耀修改器下载http://www.sxjzxny.com/ 王者修改器http://oodakedo.com/

  7. 7楼今日新闻头条 : 2022-04-11 05:00:52 评论说: @回复

  8. 6楼今日新闻头条 : 2022-04-11 05:00:51 评论说: @回复

    腾不出时间来睡觉的人,迟早会腾出时间来生病;腾不出时间来恋爱的人,迟早会腾出时间来相亲 https://chinatoday.news

  9. 5楼雷达探币 : 2021-11-05 14:57:55 评论说: @回复

  10. 4楼雷达探币 : 2021-11-05 14:57:54 评论说: @回复

    与其穷尽一生等一个完美的别人,不如花时间来好好修炼不完美的自己 https://coincryptoradar.com

  11. 3楼立行搏 : 2020-09-02 09:09:13 评论说: @回复

    写得不错

  12. 2楼hrt : 2020-08-17 17:48:52 评论说: @回复

    快递代发,礼品代发,单号购买网www.88danhw.com

  13. 1楼hrt : 2020-08-15 18:52:52 评论说: @回复

    5a单号网,专业空包代发网www.5adanhw.com

您的每一个评论都是对我的一份支持

 博客二维码

昵称 *

邮箱 *