并发的实现方法:
两个或者更多的任务(独立的活动)同时发生(进行)
实现并发的手段:
a)我们通过多个进程实现并发
b)在单独的进程中,创建多个线程来实现并发;自己写代码创建除了主线程之外的其它线程。
进程是资源分配的最小单位,线程是调度的最小单位
2.1多进程并发
world启动后就是进程,IE浏览器启动后就是进程。
进程之间通信(同一台服务器上:管道、文件、消息队列、共享内存,不同服务器上:socket通信技术)
2.2多线程并发,单个进程中,创建了多个线程。
线程:一个进程中的所有线程共享地址空间(内存);
全局变量、指针、引用 都可以在线程之间传递,所以,使用多线程开销远远小于多进程。
共享内存带来的新问题,数据一致性问题。
在C++11新标准线程库
以往:windows:CreateThread(),_beginthred(),_beginthreadexe() 创建线程
linux:pthread_create()创建线程
以往多线程代码不能跨平台;
POSIX thread(pthread):跨平台,做一番配置,所以用起来也不是很方便
从C++11新标准,C++语言本身增加对多线程的支持,意味着可移植性(跨平台)。
一旦detach后不能再join了,否则系统会报错