Linux 进程、线程创建(个人经验)

目录

Linux创建、编译文件

Linux未找到unistd.h头文件

进程创建

线程创建


Linux创建、编译文件

命令行touch 文件.后缀,创建源文件

如:touch demo.cpp创建cpp源文件

编译cpp源文件,gcc 文件名,后缀 -o 目标文件

如:gcc demo.cpp -o a

Linux未找到unistd.h头文件

在编辑的cpp当前文件夹下,创建一个unistd.h头文件,输入以下代码即可。

#ifndef _UNISTD_H
#define _UNISTD_H
#include <io.h>
#include <process.h>
#endif /* _UNISTD_H *

进程创建

Linux下,创建进程,需要使用unisted.h头文件。

fork()会创建一个新的进程,分别返回父子两个进程的PID,因此检测两次即可。

#include<unistd.h>
#include<stdio.h>
#include<sys/wait.h>

const int num = 100;
int main(){
    int rc = fork();
    if(rc < 0){
        printf("Fork failed!\n");
    }else if(rc == 0){//输出偶数
        for(int i = 0; i <= num; i += 2){
            printf("Child process:%d\t\n", i);
            sleep(1);
        }
    }else{//输出奇数
        for(int i = 1; i <= num; i += 2){
            printf("Parent process:%d\n", i);
            sleep(1);
        }
	}
    return 0;
}
//liqiang
//SIAT100051

线程创建

Linux下,创建进程,需要使用pthread.h头文件。

sleep()需要包含unisted.h头文件

pthread是线程库,用了多线程就要链接这个库,这时候要在编译选项上增加-pthread

编译多线程gcc thread.cpp -o thread -pthread

#include<unistd.h>
#include<stdio.h>
#include<pthread.h>

void *ThreadF(void* arg){
	printf("\nI'm child thread.   My pid is %lu\nI will print number between 0 to 100",(unsigned long)pthread_self());
	for(int i=0; i < 100;i+=2){
		printf("%d\t",i);
	}
}

int main(){
	pthread_t p; 
	pthread_create(&p,NULL,ThreadF,(void*)100);
	printf("\nI'm parent thread.   My pid is %lu\nI will print number between 0 to 100\n",(unsigned long)pthread_self());
	
	for(int i=1; i < 100;i+=2){
		printf("%d\t",i);
	}
	sleep(1);
	return 0;
}

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 在Linux中,进程可以创建多个线程线程是轻量级的执行单元,它们共享进程的资源,如内存、文件描述符等。在Linux中,线程是通过pthread库来实现的。要创建一个线程,可以使用pthread_create函数。该函数需要四个参数:线程标识符、线程属性、线程函数和函数参数。线程函数是线程的入口点,它会在新线程中执行。函数参数是传递给线程函数的参数。在创建线程后,可以使用pthread_join函数等待线程结束,并获取线程的返回值。 ### 回答2: 在Linux操作系统中,一个进程可以创建多个线程,每个线程都拥有自己的堆栈和程序计数器。线程进程中可独立执行的最小单元,不同线程之间可以共享进程的资源,如内存、文件和网络连接。 Linux系统提供了pthread库来支持线程创建和管理。线程创建通过调用pthread_create()函数完成,该函数的参数包括了线程标识符、线程属性、线程函数及其参数等。线程属性包括线程栈的大小、调度策略、优先级等,可以通过pthread_attr_init()和pthread_attr_set*()系列函数来进行设置。 线程函数是线程所执行的函数,它需要符合特定的格式,即void * function(void *arg),其中arg是传入线程函数的参数。可以把需要在不同线程中执行的代码封装成线程函数,进程通过创建多个线程来实现并发执行。 线程之间的通信可以通过共享内存、信号量、互斥锁等方式进行。多线程编程需要注意的问题包括线程安全、共享资源的管理、竞态条件等。在多线程编程中,必须保证线程间的同步和互斥,以防止竞争条件的出现,同时还需要避免死锁和饥饿等问题。 总之,在Linux操作系统中,通过使用pthread库可以方便地创建多个线程,实现并发执行,从而提高应用程序的性能和响应速度。但同时需要注意多线程编程中的安全性和性能问题,以确保程序的正确性和效率。 ### 回答3: Linux进程可以创建多个线程,这些线程会共享进程的内存空间和资源。线程是轻量级的执行单元,可以独立运行,也可以相互协同完成任务。线程之间的协作和同步可以通过线程库中提供的锁、条件变量、信号量等机制实现。 在Linux中,可以使用pthread库来创建线程。pthread库提供了一套完整的API,包括创建、同步、销毁等操作。线程创建需要指定线程函数的名称、传递给线程函数的参数,以及线程属性等信息。线程属性包括:线程的调度策略、优先级、堆栈大小等。 当进程创建多个线程时,这些线程可以并发执行,以提高程序的并发性能。但是需要注意的是,多个线程之间共享进程的资源,如果没有进行合理的同步和互斥处理,就会导致数据竞争和死锁等问题。因此,在多线程编程中,需要特别注意线程之间的互斥和同步机制,以保证程序的正确性和稳定性。 总之,Linux进程可以创建多个线程线程是轻量级的执行单元,可以并发执行,在多线程编程中需要注意线程之间的同步和互斥处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值