首页 > 系统相关 >Linux线程操作

Linux线程操作

时间:2025-01-06 20:47:01浏览次数:1  
标签:function main Linux 线程 thread1 pthread 操作 ing

Linux线程操作

要点:

#include <pthread.h> // 包含pthread.h头文件,用于线程操作

ret1=pthread_create(&thread1,NULL,thread_function,"Hello Thread1");//创建线程

void *thread_function(void* arg){}//线程执行函数

编译链接 `pthread`线程:
gcc 2pth.c -o 2out -lpthread

双线程实验代码:

#include <unistd.h>  // 包含unistd.h头文件,用于sleep函数
#include <stdio.h>   // 包含stdio.h头文件,用于输入输出函数
#include <stdlib.h>  // 包含stdlib.h头文件,用于exit函数
#include <pthread.h> // 包含pthread.h头文件,用于线程操作
#include <string.h>  // 包含string.h头文件,用于字符串操作函数

// 线程1的函数
void *thread_function(void* arg)
{
    // 打印线程1开始运行的信息,并显示传入的参数
    printf("thread1 function is begin\n");    
    // 循环10次
    for(int i=0;i<3;i++)
    {
        sleep(1); // 线程休眠1秒
        printf("thread1 ing\n");    
    }
    pthread_exit("==T1,Ending\n"); // 线程1结束,并返回"==T1,Ending"
}
// 线程2的函数
void *thread_function2(void* arg)
{
    // 打印线程2开始运行的信息,并显示传入的参数
    printf("thread2 function is begin\n");    
    // 循环10次
    for(int i=0;i<3;i++)
    {
        sleep(1); // 线程休眠1秒
        printf("thread2 ing\n");    

    }
    pthread_exit("==T2,Ending\n"); // 线程2结束,并返回"==T2,Ending"
}

int main()
{
    pthread_t thread1,thread2; // 定义两个线程标识符
    int ret1,ret2; // 定义两个整型变量用于存储线程创建的返回值
    // 创建线程1,传入线程函数thread_function和参数"Hello Thread1"
  ret1=pthread_create(&thread1,NULL,thread_function,"Hello Thread1");
    // 创建线程2,传入线程函数thread_function2和参数"Hello Thread2"
  ret2=pthread_create(&thread2,NULL,thread_function2,"Hello Thread2");
   for(int i=0;i<6;i++)
   {
        sleep(1); // 主线程休眠1秒
        // 打印当前char_buff的内容
        printf("main ing\n");

   }
    printf("main end\n");    
    exit(EXIT_FAILURE); // 主线程结束,返回失败状态
}

编译链接 pthread 库:

gcc 2pth.c -o 2out -lpthread

赋权,执行

chmod 777 2out
./2out

运行日志:

root@localhost:/home/lckfb/pthread# ./2out
thread1 function is begin
thread2 function is begin
main ing
thread2 ing
thread1 ing
main ing
thread2 ing
thread1 ing
main ing
thread1 ing
thread2 ing
main ing
main ing
main ing
main end
root@localhost:/home/lckfb/pthread#

期间ctrl+z挂起线程

查看线程

ps

image-20250106194536438

强制终止该进程-9

kill -9 13012

标签:function,main,Linux,线程,thread1,pthread,操作,ing
From: https://www.cnblogs.com/tianwuyvlianshui/p/18656202

相关文章

  • 使用Java API操作HDFS
    第一步:在Windows配置Hadoop运行环境(1)编辑系统环境变量。使用hadoop-version命令查看hadoop环境是否配置成功,如下图所示:(2)在hadoop-3.3.4文件夹的bin目录下添加Windows系统的依赖文件,如下图所示:(3)重启电脑第二步:配置案例环境,使用idea创建一个maven项目。第三步:在pom.xm......
  • Tomcat 三大核心线程组件Acceptor、Poller 和 Executor&为什么tomcat 要把Acceptor单
    在Tomcat的架构中,Acceptor、Poller 和 Executor 是处理网络连接和请求的重要组件。 AcceptorAcceptor 是Tomcat中负责接受新连接的组件。它的主要职责包括:监听端口:Acceptor在线程中监听一个特定的端口,等待客户端连接请求。接受连接:当有新的连接请求到达时,Accepto......
  • 2025.1.6-3 Linux虚拟机网络配置
    VMware有三种主要的网络配置模式,分别为桥接模式(用的最多)、NAT模式(用的少)和仅主机(基本不用)模式。每种模式都有其特点和适用场景,以下为你详细介绍:1.桥接模式(Bridged)(最重要)原理:在桥接模式下,虚拟机的虚拟网卡会与主机的物理网卡进行桥接,虚拟机就如同局域网中的一台独立物理......
  • [读书日志]从零开始学习Chisel 第四篇:Scala面向对象编程——操作符即方法(敏捷硬件开发
    3.2操作符即方法3.2.1操作符在Scala中的解释在其它语言中,定义了一些基本的类型,但这些类型并不是我们在面向对象中所说的类。比如说1,这是一个int类型常量,但不能说它是int类型的对象。针对这些数据类型,存在一些基本操作符,比如算数操作符“+”。Scala所追求的是极致的面向对......
  • Linux环境变量配置
    0前言环境变量的配置主要便于操作系统正确的搜索到想要的文件,以及一些其他的配置。Linux中的环境变量配置分别有三种:临时的,个人用户的,全局的。相比Windows中的环境变量配置,多了临时的选项。1三种配置方法1.1临时配置export用户在终端可以通过export命令完成环境变量的临时......
  • Linux内核的固定映射:提升性能的秘密武器
    在当今数字化时代,高效稳定的Linux内核是众多技术应用的基石。你是否好奇,如何让Linux内核在复杂任务中实现卓越性能?今天,我们要揭开其提升性能的秘密武器——固定映射。它就像一位默默发力的幕后英雄,通过独特的机制,优化内核内存访问,让系统运行如丝般顺滑。下面,让我们一同走......
  • Java高级开发面试题,在设计一个高并发的在线交易系统时,如何确保线程安全和数据一致性?
    在设计一个高并发的在线交易系统时,如何确保线程安全和数据一致性?考虑一个类似于电子商务平台的商品秒杀活动。在这种场景中,大量用户会在短时间内尝试购买有限数量的商品。因此,系统的挑战在于处理高并发请求,同时确保每个订单的数据完整性和一致性。1.锁机制与性能考量传......
  • Mongodb日常操作命令
    查看数据库状态:db.stats()查看集合状态:db.collection_name.stats()查看索引使用情况:db.collection_name.getIndexes()重新生成集合的索引:db.collection_name.reIndex()查看查询执行计划:db.collection_name.find({...}).explain()查看库大小:db.stats();查看集合大小:db.js_user.st......
  • 第五章、 Linux 常用网络指令
    5.1网络参数设定使用的指令任何时刻如果你想要做好你的网络参数设定,包括IP参数、路由参数与无线网络等等,就得要了解底下这些相关的指令才行!其中以ifconfig及route这两支指令算是较重要的喔!^_^!当然,比较新鲜的作法,可以使用ip这个汇整的指令来设定IP参数啦!ifconfig......
  • busybox最小Linux系统
    环境WSL(Ubuntu22.04)创建磁盘映像可以使用fallocate为磁盘映像分配一块空间,或者使用ddif=/dev/zeroof=$imgbs=1Mcount=$size_in_MB直接得到一个大小为$size_in_MB大小的文件。使用mkfs.ext4格式化映像文件,并使用mount-oloop$imgmnt将文件挂载。如果想要在磁盘映像中......