Leetcode concurrency #1115 Print FooBar Alternately (in golang)
Mar 26, 2021
繼上篇Print in Order之後,我們繼續挑戰concurrency,這次難度會從easy變成medium,但我覺得還是很簡單。
一樣先從題目解析開始,跟1114類似,一個class有兩個method,一個會印n次foo;另一個會印n次bar,兩個method個別分別會在不同的執行緒執行,希望最後印出來的結果是foobar重複n次。
跟上次的前題差不多,因為沒有golang的內建支援,所以main和run都是我的假設。
其實這次的解題思路跟上次87趴像,也是用兩個unbuffered channel互相等待互相指揮,唯一一個差別是channel的開始和結束需要做些判斷,不然會deadlock。所以foo在開始的時候不等,而bar在結束的時候不送。這樣就打完收工。