1,函數
2,3d
3,orm
4,blog
5,string
6,it
第6點很關鍵:先是調用消費者,來喚醒一個協同例程producer,協同例程producer讀取一個數據x後調用send。send函數中調用yield(x),該函數將本身這個協同例程掛起,並返回給以前調用resume的函數。而且返回值的第一個是表示狀態,第二個值表示傳遞給yield函數的x值。也就實現了將讀取的x傳遞給消費者。而且知足消費者須要一個數據,生產者就生成一個數據。io
7,form
第7點很關鍵:p=producer()調用,產生一個協同例程賦值給p。而後調用filter(p)產生一個協同例程賦值給f。而後調用consumer(f),首先會調用receive(f),進而調用resume(f)。喚醒f協同例程後,直接調用receive(p)(這裏必定要理解,f是和p想關聯的。由於以前調用了filter(p)),而後喚醒p協同例程。p協同例程讀取一個值,返回給receive(p),而後進行string.format進行過濾,而後調用send(x),進行掛起協同例程。最終返回給resume,再返回給consumer的receive函數。最終調用write函數將讀取的數據進行輸出。select
8,本章的最後一個例子,下載多個文件,對整個程序的理解頗有幫助,能夠多看看。甚至這裏面使用到了io多路複用函數select函數。yield