linux c 多线程小程序,Linux下的C----多进程与多线程

本文介绍了Linux环境下使用C语言实现多进程和多线程的例子。通过`fork()`函数创建进程,展示了进程间的独立性。同时,通过`pthread_create()`创建线程,说明线程作为轻量级进程在资源消耗和执行效率上的优势。文章还讨论了进程与线程的区别,并提及线程控制和资源管理的相关函数,如`pthread_exit()`和线程泄露问题。
摘要由CSDN通过智能技术生成

1.多进程实例:

进程:

是一种抽象的概念,从来没有统一的标准定义:

进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动;

进程是一个独立的可调度的活动;

进程是可以并行执行的计算单位;

进程是一个抽象实体,当它执行某个任务时,要分配和释放各种资源;

通常定义:进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程序运行的载体。

#include

#include

#include

#include

int main()

{

pid_t pid;

char *message;

int n;

pid=fork();

if (pid

{

perror("fork failed");

exit();

}

if(pid==)

{

message="This is the child\n";

n=;

}

else

{

message="This is the parent\n";

n=;

}

for(;n>;n--)

{

printf(message);

sleep();

}

return ;

}

2.多线程实例:

线程:

早期的操作系统中并没有线程的概念,进程是能拥有资源和独立运行的最小单位,也是程序执行的最小单位。任务调度采用的是时间片轮转的抢占式调度方式,而进程是任务调度的最小单位,每个进程有各自独立的一块内存,使得各个进程之间内存地址相互隔离。

后来,随着计算机的发展,对CPU的要求越来越高,进程之间的切换开销较大,已经无法满足越来越复杂的程序的要求了。于是就发明了线程,线程是程序执行中一个单一的顺序控制流程,是程序执行流的最小单元,是处理器调度和分派的基本单位。

#include

#include

void thread()

{

int i;

for(i=;i

printf("This is a pthread\n");

}

int main()

{

pthread_t id;

int i,ret;

ret=pthread_create(&id,NULL,(void *) thread,NULL);

if(ret!=)

{

printf("Create pthread error!\n");

exit();

}

for(i=;i

{printf("This is the main process.\n");

}

pthread_join(id,NULL);

return ;

}

Linux下C编写基本的多线程socket服务器

不想多说什么,会搜这些东西的都是想看代码的吧. 一开始不熟悉多线程的时候还在想怎么来控制一个线程的结束,后来发现原来有pthread_exit()函数可以直接在线程函数内部调用结束这个线程. 开始还想 ...

linux下一对多socket服务器端多线程泄露问题

线程创建多了,没有释放.导致内存泄露... int main() { int len; int on=1; // pMachList = CreateEmptyLinklist(); DataBase ...

Linux下的下载工具介绍----aria2

ariac 项目地址:http://aria2.sourceforge.net/ 下载地址:http://sourceforge.net/projects/aria2/files/stable/ari ...

linux 下 多进程与多线程

[Linux]多进程与多线程之间的区别 http://blog.csdn.net/byrsongqq/article/details/6339240 网络编程中设计并发服务器,使用多进程与多线程 ,请 ...

【转】 Linux下的多线程编程

作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/原文链接:http://www.cnblogs.com/gnuhpc/archive/2012/12/07/280 ...

Linux下的多线程编程

1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者.传统的 Unix也支持线程的概念,但是在一个进程(proces ...

【转】Linux下的多线程编程

1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者.传统的 Unix也支持线程的概念,但是在一个进程(proces ...

《转》Linux下的多线程编程

原地址:http://linux.chinaunix.net/doc/program/2001-08-11/642.shtml 1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程 ...

【Linux】多进程与多线程之间的区别

http://blog.csdn.net/byrsongqq/article/details/6339240 网络编程中设计并发服务器,使用多进程与多线程 ,请问有什么区别?  答案一: 1,进程:子 ...

随机推荐

ZeroMQ接口函数之 :zmq_tcp – 使用TCP协议的ØMQ网络单播协议

ZeroMQ 官方地址 :http://api.zeromq.org/4-1:zmq-tcp zmq_tcp(7)          ØMQ Manual - ØMQ/4.1.0 Name zmq_t ...

dynamic 的使用 待续

Dynamic 使用场景之一 : 替代反射 class Me { public string Blog { get; set; } public string GetName() { return&q ...

PHP图像处理之画图

PHP图像处理    画图        验证码,统计图 安装GD库-----LAMP            安装后在D:\APMServ5.2.6\PHP\ext文件中有php_gd2.dll文件  ...

support vector regression与 kernel ridge regression

前一篇,我们将SVM与logistic regression联系起来,这一次我们将SVM与ridge regression(之前的linear regression)联系起来. (一)kernel r ...

jquery第一期:运行第一个jquery

首先下载js文件,网址jquery.com去下载,可以下载1.10版的 首先打开editplus进行编辑,添加js文件: 编写代码: /p>

zen coding一个牛的不行的html和css开发工具

zen coding 是一种仿css选择器的语法来快速开发html和css的开源项目.现已更名为Emmet.可以到github上下载拜读.在这个都想偷懒的世界里,此方法可以极大的缩短开发人员的开发时间 ...

Java 装箱和拆箱

1.装箱机制 基础类型引用到其包装类型,这样就可以调用其各种方法. 例如,我们声明: Integer a = 1; 其在编译过程中会自动解释成: Integer a = Integer.valueOf ...

CentOS7下Docker中构建Jenkins容器

背景 在CentOS搭建Docker完成后,我们需要在Docker中搭建Jenkins用来实现工程自动部署. 安装前提 jdk已安装,安装目录如:usr/java/jdk1.8.0_161 maven ...

CentOS6.5安装RHadoop

1.首先安装依赖包(各个节点都要安装) [root@Hadoop-NN-01 ~]$ yum install gcc-gfortran #否则报”configure: error: No F77 co ...

从CMDB查询云平台组件或者IP简单脚本

#!/bin/bash#author xiaoweige#todo: ip -- > ingredient or ingredient -- > ip #todo: get the ip ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值