我们来看一个例子(可以在 LeafServer 的模块的 OnInit 方法中测试):
这里的 Go 方法接收 2 个函数作为参数,第一个函数会被放置在一个新创建的 goroutine 中执行,在其执行完成之后,第二个函数会在当前 goroutine 中被执行。由此,我们可以看到变量 res 同一时刻总是只被一个 goroutine 访问,这就避免了同步机制的使用。Go 的设计使得 CPU 得到充分利用,避免 *** 作阻塞当前 goroutine,同时又无需为共享资源同步而忧心。
这里主动调用了 d.Cb(<-d.ChanCb) ,把这个回调取出来了。实际上,在skeleton.Run里会自己取这个通道
看一下源码:
New方法,会生成指定缓冲长度的ChanCb。然后调用Go方法就是先执行第一个func,然后把第二个放到Cb里。现在手动造一个例子:
这里解释一下,d.Go根据源码来看,实际也是调用了一个协程。然后上面两次d.Go并不能保证先后顺序。目前的输出结果是1+2那个先执行了,把3写入d.ChanCb,然后把3读出来,继续读时,d.ChanCb里没有东西,阻塞了。然后1+1那个协程启动了,最后又读到了2。
现在把time.Sleep(time.Second)的注释解开,会是啥结果呢
这里执行到time.Sleep睡着了,上面两个d.Go仍然是不确定顺序的,但是会各自的function先执行掉,然后陆续把cb写入d.ChanCb。看这次输出,1+2先写进去的。所以最后执行d.Cb时,就把3先读出来了。然后d.ChanCb的长度为1,说明还有一个,就是输出2了。
另外,就是close时会判断g.pendingGo
这个例子的意思很明显,NewLinearContext这种方式,即使先调用的慢了半秒,它还是会先执行完。
这里先是用了一个list,加入的时候用mutexLinearGo锁了,都加到最后。然后新开协程去处理,读的时候从最前面开始读,也要用mutexLinearGo锁。执行的时候,也要上锁mutexExecution,确保f()执行完并且写入g.ChanCb回调,这个mutexExecution锁才会解除。现在可以改造一个带回调的例子:
结果说明,确实是2先被写入了d.ChanCb。
1、mozzarella:意大利的一种淡芝士,用途广泛比较常见做披萨用的。
用水牛奶做的MOZZARELLA,产于意大利南方。MOZZARELLA还可以拌沙拉,最简单也最美味叫"CAPRESE",是以番茄和MOZZARELLA各切片一拌加上两片罗勒叶,浇上一缕特纯橄榄油即可。两样肥肥地切成片,摆上两片罗勒淋上一缕朋友的农场刚榨出来的橄榄油。MOZZARELLA还有一个变身叫SCAMORZA,也叫烟熏MOZZARELLA。比MOZZARELLA颜色更深,吃口更韧味道更重好比嫩豆腐和老豆腐。SCAMORZA最典型的吃法是切成厚片在铁板上两面烤一下,外面烤得焦黄有点脆,里面给烘的变成半流质一口咬上去又Q又香,这种做法以PUGLIA大区为上佳。还有一种吃法也是切片,夹在两片土司面包当中,裹上蛋液煎了吃,也是相当美味就是太油腻。
2、Gruyere:瑞士产味道重,全奶硬质干酪,有果仁味用蜡纸包装。
CHEESE FONDUE 瑞士火锅: 瑞士芝士火锅Swiss Cheese Fondue搭配火锅的饮料可以是白葡萄酒、白葡萄汁或是冰茶,口感以清爽为主。
瑞士的芝士火锅非常有名,在瑞士Gruyere、大孔芝士上放进芳郁的葡萄白酒Chardonnay化成原汁,依不同喜好放入蒜蓉、黑胡椒、牛奶、香草等调料。配上切成小块的面包,放到温暖着的火锅里。蘸着香浓的芝士,美妙的口感从此开始。
3、Cheddar:英国产较常见,口味柔和质地细腻。
切达干奶酪是世界上购买与消费最多的一种奶酪。最初产于英国,但是现在已经在世界上很多个国家生产了。通常切达奶酪是坚硬的天然的干酪,形状象鼓并且外层有天然的布状外壳。通常切达奶酪的颜色从白色到浅黄色不等,还有一些切达的颜色是认为加上的使之成为一种橘黄色。切达是有牛奶做成的,如果用适当的方法制作就会有着非常细微的松散组织。在它还很嫩的时候它的结构是平滑的。它的气味会随着它的成熟越来越重。奶加热到86华氏度的时候加入乳发酵剂,一小时后加入rennet(法国产的一种苹果)。当凝乳形成的时候,就会形成大理石状的小块,把它加热到100华氏度。倒出乳清,然后它们切成小块。凝乳要压一整夜,并在阴凉的地方保存4天。
4、Goat cheese:山羊芝士,营养价值很高。
顾名思义这种奶酪是由山羊奶制成。味道略带酸性,口感近似果仁而且形状比较多样化,多呈圆柱状或金字塔状。有些以核桃叶包裹可作为餐后的甜品,将之薄切于沙拉或面包上放入烤箱加热美味可口。
5、Feta cheese:希腊产一种以山羊或绵羊奶制成后,在盐水中腌熟的软芝士。
6、Ricotta: 意大利产,白色质地软,常用于冷菜。
RICOTTA虽说是奶油乳酪,但含脂量不高而且不甜也不咸。极适合做减肥食谱中的抹酱,而且奶香味十足自认为比酸奶色拉酱更胜一筹。
7、Parmesan :意大利产的硬干酪,世界著名用途广泛。
柔和的淡黄色带有金黄色至浅棕色的边,特别的硬和干燥。有一种淡淡的刺鼻子的异味,但吃起来有一股浓烈的干果香味。
帕马森乳酪那砂砂、略硬的迷人特殊口感与口中久久不散的浓郁乾果与牛奶的香气,适合磨成粉或刨成丝状加入菜肴里,成为义大利菜不可或缺的调味灵魂。帕马森乾酪的吃法非常多,可以直接吃,配水果吃,也可加在沙拉或义大利面里都十分美味。
8、Cream cheese :奶油状口感细腻味道柔和,常用于饼房和冷菜。
9、Emmentaler:这是一种世界著名的瑞士出产的奶酪。淡黄色,带有葡萄大小的空洞和金黄色至浅棕色的边。Emmentaler是一种著名的上乘奶酪,表层有许多奶酪发酵过程中由碳酸形成的气孔。干果味道,初入口淡淡的甜味随之而来的是强烈的辛辣味。Emmentaler 切片放面包上或与白葡萄同吃,切片的Emmentaler 很好吃。但硬的Emmentaler 口感不好,有一种渣渣漠漠的感觉。
10、Gouda:一种荷兰的特产奶酪,但在市场上也可见到其它国家生产的Gouda。根据成熟程度从浅黄色到金棕色、柔软到干硬不等。味道也由柔和、细腻,淡淡的辛辣,辛辣至浓烈不等。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)