进程控制
linux
-
fork()—位于/kernel/fork.c中;
新进程是当前进程的子进程(子进程是父进程的复制,并发远行,仅仅是时间信息,ID号不一样),子进程与父进程谁先输出谁后输出是不知道的。
子进程中的pid为0,而父进程中的pid为子进程的ID号。
子进程会“灰掉”fork()及以上的代码 。
init进程是所有进程的父进程。 -
exec函数簇
使子进程与父进程有不同的功能。
线程
“先画圆后画方”不是线程,不是并发
-
概念
- 线程使可由CPU直接运行的实体
- 一个进程可以创建多个线程
- 多个线程共享CPU可以实现并发运行
-
创建线程
windows: CreateThread()。如:
linux: #include<pthread.h>CreateThread(0,0,DrawCircle,0); CreateThread(0,0,DrawRect,0);
-
单线程与多线程
单线程: 缺省main();
多线程: 一个主线程和至少一个用户进程; -
多线程现实场景
- 需要并发运行多个线程(例如:暴风影音要解码视频、音频,还要接收网络数据)
- 交互性的程序(例如:登陆程序以及拷贝过程)
- 需要改善程序结构的地方
- 电脑多核时,多线程可以提高CPU性能
-
线程的麻烦
- 程序难以调试
- 并发过程难以控制
- 线程的安全问题