C++ 多线程

来源:互联网 发布:生产数据统计方法 编辑:程序博客网 时间:2024/05/16 02:12

int main() {

printf("Hello");

fork();

printf("Hello");

}

1.fork()函数会把它所在语句以后的语句复制到一个子进程里,单独执行。

2.如果printf函数最后没有"\n",则输出缓冲区不会被立即清空,而fork函数会把输出缓冲区里的内容也都复制到子进程里。
所以,父进程和子进程各输出2个Hello,共4个。


clone是fork的升级版本,不仅可以创建进程或者线程,还可以指定创建新的命名空间(namespace)、有选择的继承父进程的内存、甚至可以将创建出来的进程变成父进程的兄弟进程等等


fork之后子进程复制了父进程的数据、堆栈。但是由于地址重定位器之类的魔法存在,所以,看似一样的地址空间(虚拟地址空间),其实却是不同的物理地址空间。同时可以验证c程序中输出的地址空间其实都是虚拟地址空间。

0 0
原创粉丝点击