6.824笔记2
线程为每一个prc请求使用一个线程,当请求回收的时候,线程继续运作,多线程能能够开启多个网络请求,形成io并发
并行化,线程用来实现并行化
异步编程,事件驱动编程,又一个线程,一个循环,循环等待输入或者其他出发时事件,通过一个表记录每个触发的客户端的状态和任务,这种情况相对来说比较简单
进程:一个单独运行的程序,可以有很多线程,有一个给定的内存区,线程之间可以很方便的进行通信,但是进程之间的通信需要单独设置
多线程常见的问题,共享数据,他们共享数据空间,共享数据和内存,但是会出现同时读写的线程冲突,解决方式就是给数据加锁,将一个连续的线程转化成原子操作。但同时可能会产生环和死锁
协作,使用通道进行线程间的协作
web爬虫,一个多线程的例子,爬虫需要记住爬过的数据和正在爬的数据,从而避免环
复杂程序中的race一般很难查
一种通信的例子是worker和master,这两者之间不会有共享内存,而是通过channel来进行,channel是两个接口和互斥锁的一段封闭线程

浙公网安备 33010602011771号