C_Sharp 板


LINE

如題 兩個問題 1.Socket send too fast 之前問過有關Socket的問題 不過後來抓出問題好像不在Socket的Connected判斷身上 而是當Socket重複送太快的時候 會造成錯誤然後Socket就斷線了 目前如果要送訊息,會把訊息Queue在Arrary裡面 然後以100ms去跑一個Timer OnTimer內再用While迴圈去把所有Array的訊息都送出去 但好像只要連續送幾個訊息就會當了 就算是一來一往,只要區網速度太快也會造成一樣問題 這時候該用什麼方法解決比較好? 原本是想說在送一個訊息之後Delay幾ms 或者直接將幾ms內呼叫的Send指令給pass掉 但這些都不是我要的 有沒有辦法以最安全的方法,讓訊息能以可能的最快時間全部發送出去? 2.Timer overlap 這是另一個問題 一個主Thread裡面以100ms跑Timer OnTimer內用foreach跑所有子物件的OnTimer 然後子物件的OnTimer內才會去處理所有各自的事情 原先以為,統一由主Thread去呼叫,可以避免多執行緒的交錯問題 結果卻發現還是有交錯 後來查詢跟實驗的結果,發現是Timer的Overlap問題 也就是說在還沒完成所有子物件的OnTimer之前 100ms就到了所以呼叫第二次的主Thread的OnTimer 然後就跑出了意外的結果 搜尋的結果 嘗試使用lock跟timer.stop跟timer.start 的確讓交錯問題消失了 但產生另一個問題是 當子物件數量一多,整個OnTimer的迴圈就變慢很多 造成主Thread無法以100ms穩定的跑 雖然說要做的事應該是需要堆疊完成才對 但不知道有沒有辦法讓主Thread要做的事穩定進行 然後子物件的OnTimer判斷獨立出來延遲? 還是說這樣的想法有根本上的錯誤? 實際上應該是要把兩個Timer分開? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.128.131.226
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_Sharp/M.1492418032.A.2C4.html
1F:→ AizawaYuuiti: 好像找到一些關鍵字 04/17 18:04
2F:→ AizawaYuuiti: 不用Send改用BeginSend,然後sendDone.WaitOne() 04/17 18:04
3F:→ AizawaYuuiti: Timer的部分還在思考... 04/17 18:05
4F:推 s89227: callback? 04/17 19:39
5F:→ Litfal: 你把事情搞得好複雜,你到底想不想讓他們非同步(重疊)跑? 04/17 21:16
6F:→ AizawaYuuiti: 現在想法也是有點混亂,有些要同步有些不同步的 04/17 22:40
7F:→ AizawaYuuiti: 主要是主Thread想讓他保持100ms跑 04/17 22:41
8F:→ AizawaYuuiti: 但如果裡面的子物件使用同步跑且順序等,數量一多就 04/17 22:41
9F:→ AizawaYuuiti: 會超過100ms,而且越多越久。 04/17 22:42
10F:→ AizawaYuuiti: 但使用非同步的時候,有些判斷式是需要偵測其他物件 04/17 22:42
11F:→ AizawaYuuiti: 狀態的,然後就會發生兩邊同時修改同時判斷成功 04/17 22:42
12F:→ AizawaYuuiti: 所以才會覺得非同步會造成一些問題。 04/17 22:43
13F:→ Litfal: 聽你的說法感覺你不應該用timer 04/17 23:33
14F:→ Litfal: 你看要不要再把問題描述的具體一點,主執行緒100ms是只負 04/17 23:37
15F:→ Litfal: 責啟動或加入工作(Task)嗎? 04/17 23:37
16F:→ Litfal: 目前看起來你的子工作各自有各自的timer在執行,不太能理 04/17 23:41
17F:→ Litfal: 解你為何要這樣做 04/17 23:41
18F:→ ssccg: 例如說把訊息queue在array,然後排程去從array取出來這點就 04/18 14:14
19F:→ ssccg: 怪怪的,通常會直接放進一個BlockingQueue,然後一個thread 04/18 14:14
20F:→ ssccg: 固定從這個queue前端取東西一直送就好,沒東西自然會停著等 04/18 14:15
21F:→ ssccg: 要調頻率就動這thread沒有平行執行的問題 04/18 14:16
22F:→ ssccg: 你還是把需求講清楚一點,看有沒有從根本架構修改的方法 04/18 14:17
23F:推 jizang: Thread+同步, 或者單執行許+非同步 04/18 22:09
24F:推 jinmin88: 回2..在timer要做事情之前用lock(obj){}包住 04/19 01:26
25F:→ jinmin88: 他第二次跑的時候如果發現還在lock..就會skip過去 04/19 01:26
26F:→ Litfal: 你什麼時候有Critical Section進不去就會被跳過的錯覺了 04/19 02:36
27F:→ jinmin88: sorry想錯了,的確不會skip,剛查了可試Monitor.TryEnter 04/19 13:28
28F:→ AWEN221: 感覺你無法確認OnTimer時上一次TIMER的工作是否做完... 04/24 11:14







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP