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
强制终止该进程-9
kill -9 13012
标签:function,main,Linux,线程,thread1,pthread,操作,ing
From: https://www.cnblogs.com/tianwuyvlianshui/p/18656202