碰上乙個ACE問題

2021-04-21 11:49:57 字數 735 閱讀 3048

2008-11-4

ace5.5

現象:乙個正常的tcp連線,一段時間後client向server傳送資料失敗——127.0.0.1的位址,連線未斷開,client日誌顯示傳送成功,而server的日誌卻顯示未收到資料。

內部實現:

client傳送資料時首先將資料加入ace_message_queue中,再使用reactor()->notify(this, ace_event_handler::write_mask)進行傳送(該過程正常執行);在傳送執行緒ace_task_base的svc()中迴圈呼叫reactor()->handle_events()處理事件,在handle_output中呼叫send_n進行傳送;程式沒有呼叫reactor()->register_handler註冊ace_event_handler::write_mask事件。

跟蹤:發現沒有**handle_output()——是因為使用notify方式不能保證該函式被**嗎?

嘗試加入ace_event_handler::write_mask註冊。

犯錯了!執行緒被堵了。

本次問題在asr時發生,以前發生過一次「是」在tts時,現象完全一樣——現在才發現其實上次的原因也是因為asr造成的執行緒阻塞,難怪上次一直壓tts問題也沒重現。

看看錯誤的傳遞路徑:

asr語法錯誤 -> 「過快」的錯誤處理 -> 底層裝置狀態錯誤 -> 底層api呼叫阻塞 -> 執行緒阻塞 -> 通訊失敗 -> tts不可用

——夠爛吧?

關於上乙個問題的解釋

private functioninit void private function init voidtypeerror error 1034 強制轉換型別失敗 無法將 flash.display sprite 156b7b1 轉換為 mx.core.iuicomponent。而是在contain...

Lintcode 上乙個排列

給定乙個整數陣列來表示排列,找出其上乙個排列。注意事項 排列中可能包含重複的整數 您在真實的面試中是否遇到過這個題?yes 樣例給出排列 1,3,2,3 其上乙個排列是 1,2,3,3 給出排列 1,2,3,4 其上乙個排列是 4,3,2,1 標籤 排列 思路 逆序找到第乙個不是遞減的數字置為i,從...

Lintcode 上乙個排列

給定乙個整數陣列來表示排列,找出其上乙個排列。樣例 給出排列 1,3,2,3 其上乙個排列是 1,2,3,3 給出排列 1,2,3,4 其上乙個排列是 4,3,2,1 解釋 所謂的上乙個排列其實就是把給定數字組合,並從大到小排列,找到與給定排列最接近,且比它小的排列 即其上乙個排列 比如 1,3,2...