多线程学习(一)
来源:互联网 发布:淘宝采集软件收费吗 编辑:程序博客网 时间:2024/05/29 16:37
多线程在C++中占有很重要的一部分,也是很重要的一部分
fork函数
#include <iostream>#include <unistd.h>using namespace std;int main(){ pid_t pid; int num = 10; for(int i = 1;i <= 3;i++) cout << "befor i = " << i << endl; pid = fork(); if(pid > 0){ cout << "This is fater,pid = " << getpid() << endl; num++; } else if(pid == 0){ cout << "This is son ,pid = " << getpid() << " father id : "<< getppid() << endl; num++; } for(int i = 1; i <= 3; i++) cout << "end i = " << i << endl; cout << "!!!!!!!" << " " << num << endl;}
fork()函数,分叉函数,生成一个和父进程一模一样的子进程,同时,这个函数有两个返回值,一个子函数的,一个父函数的。
fork()函数的两个头文件
#include<unistd.h>#include<sys/types.h>
fork()函数的返回值是pid_t类型的,而且我们可以通过其值大小来分辨进程,父进程的返回值是其子进程的进程ID,子进程则为0。
同时,getpid():获取当前进程的ID,getppid()获取父进程的进程的ID。
每个进程都有自己对应的ID,我们在Linux下的终端就可以通过 ps aux这条指令来查询当前所有进程
#include <iostream>#include <unistd.h>using namespace std;int main(){ pid_t pid; int num = 100; int i; for(i = 1; i<=5;i++){ pid = fork(); if(pid == 0) break; } if(i == 1) cout << "This is first son id :" << getpid() << endl; if(i == 6) cout << "This is father id :" << getpid() << endl;}
同时,看这个例子,我们可以通过多次循环,由一个父进程得到多个并列的子进程,但是在循环的时候要注意一点,如果直接用循环来fork的话,就像我们最初的遇到的一个兔子生小兔子,小兔子第二年就可以生兔子。我们这个循环就要做一个判断,当它的进程ID判断出来为0后,我们就把他掐断( 这样就可以生出来许多并列的子进程了,当然,父进程都要是最后才会终止的
阅读全文
0 0
- 多线程学习(一)
- 多线程学习(一)
- 多线程学习(一)
- 多线程学习(一)
- 多线程学习(一)
- 多线程学习(一)
- 学习多线程(一)认识多线程
- 多线程学习(一)什么是多线程?
- linux多线程学习(一)
- linux多线程学习(一)
- 多线程的学习(一)
- linux多线程学习(一)
- linux多线程学习(一)
- linux多线程学习(一)
- java多线程学习(一)
- JAVA多线程学习(一)
- java多线程学习(一)
- 多线程学习(一)----CreateThread
- 针对SGX的缓存攻击(Cache Attack)调研
- 在ncverilog仿真条件设置中+nospecify ,+notimingcheck 和 +delay_mode_zero之间有什么区别
- ScrollView加载里面的数据出现下滑(可能是焦点问题)
- 二叉查找树迭代器
- 宣传一下自己的私人博客
- 多线程学习(一)
- Java Thread API
- Django框架学习笔记(22.CSRF原理简单介绍)
- 剑指Offer(三)从尾到头打印链表
- 51nod 1416 两点 -dfs
- 七牛云简单上传图片 展示
- vue入门
- 二分答案0.1
- linux三个特殊权限setuid.setgid和stick bit使用详解