2014年2月20日到叫(黑土)(人士)的公司去面試,一家新成立的公司。剛去公司是他們新聘請的獵頭A來面試我的,A面試完之后是一個號稱X總的年輕人來面試我,初一見此人有點邋遢,穿着西裝。
X:"你以前有做過地圖?"(我簡歷上有寫)
我:"是的,在地圖上做過增值"
X:"你以前也做過socket,那你socket怎么樣?"
我:"還行"
X:"如果100w的數據怎么發送?"
當時我被他這么一問,問悶了。
我也沒多想就回答:"100w的話做長連接吧"
X:"長連接很耗電?"
我:"如果是PC或者服務器,這個電不在計算的范圍內?"
X:"是發送到手機上的。"
接着我也沒下文了,悶了。
面試完了,然后回公司的路上我在想:"對呀,服務器怎么發起到手機端的socket"
郁悶中。。。。
平常我自己寫的原生socket(不是nio),一個socket的input和output都是在同一個線程中。即同步式的,先讀再寫或者先寫再讀(有先后順序,沒辦法隨時寫或者隨時讀)。
不過在回公司的路上之后我也在想,這個原生socket能不能把inputstream和outputstream分別放在不同的線程上面,同時有一個線程進行把數據一直放到寫隊列中。
但是一旦read線程啟動,write線程就被block了(即read被block時write也被block了)。所以同一個socket的input和output只能是放在同一個線程中進行過程式(同步式的,read之后再write,或者write之后再read)