沐茗@煙燻機器人
[44]
多執行序的部分處理起來好麻煩......
掰噗~
囧吱吱
舞喵🐾ꉂ(ˊᗜˋ*)
開始進行花式wait (???
米斯月☠鸚鵡腦
是時候拿筷子戳死哲學家了(x
匿名巴格
舞喵🐾ꉂ(ˊᗜˋ*) : 花式wait不就是代表多工性很差嗎XD"
舞喵🐾ꉂ(ˊᗜˋ*)
匿名巴格 : 看原本的設計圖了,是真的有遇到硬要把互相等來等去的東西做多工的

最後弄是弄出來了
快個5%左右吧
然而wwwwwwwww
匿名巴格
就看這5%有沒有假直(欸)
沐茗@煙燻機器人
呃呃....
沐茗@煙燻機器人
我的工作室把單工改多工
就是照一張照片照完之後處理要花很多時間,所以讓他背景處理,讓下一張照片可以開始照
目前遇到的麻煩是,我用來判斷UI是否要開的一個計數器,跟resume app的部分會lock同一個東西
沐茗@煙燻機器人
難搞
六月雪果茶
先不管哲學家了 他們這樣違反防疫原則
舞喵🐾ꉂ(ˊᗜˋ*)
邏輯上感覺背景作業的是直接切斷跟ui的聯繫,然後原本是拍照完做完以後resume改成拍照完直接resume
沐茗@煙燻機器人
舞喵🐾ꉂ(ˊᗜˋ*) : 狀況是這樣
拍照(很快)→處理(很久)
所以可能有三張照片都拍好了可是在處理
UI的部分行為需要在所有照片都拍好的時候來設置,所以沒辦法完全拆開

目前有一些想法了,明天試試看
舞喵🐾ꉂ(ˊᗜˋ*)
想像中是否UI會顯示一個拍好的照片在那邊,可是還沒處理完不會有wwww
沐茗@煙燻機器人
舞喵🐾ꉂ(ˊᗜˋ*) : UI會顯示一個假的照片在那(
舞喵🐾ꉂ(ˊᗜˋ*)
只好先做loading假貨放在那
舞喵🐾ꉂ(ˊᗜˋ*)
沐茗@煙燻機器人
其實我在想用別的東西來當計數器就好(诶
舞喵🐾ꉂ(ˊᗜˋ*)
沐茗@煙燻機器人 : 就fork一個新的出來(欸
沐茗@煙燻機器人
整理一下說法,現在狀況是
原本的架構:
拍照時,在完成之前會有一個圖案在轉圈圈,取完照片處理完之後那個東西要被關掉,而如果拍照失敗也會來中斷它
但是現在變成多張在處理,所以有可能第一張照片處理失敗,但這邊正在轉第三張照片的圈圈,就不應該要關掉轉圈圈的畫面,計數器是用在這邊
沐茗@煙燻機器人
(其他還有一些類似的情況
沐茗@煙燻機器人
突然發現,我好像把處理UI的東西丟到另一個Thread就可以了耶
沐茗@煙燻機器人
明天再仔細想
舞喵🐾ꉂ(ˊᗜˋ*)
那個圈圈專門開一個thread給處理相片的用ww
沐茗@煙燻機器人
那個圈圈應該是獨立的,但是要對它設定之前要拿Session count,拿Session會lock Session,是這個造成Deadlock(有另一個順序反過來的Lock我沒提,那個不太能動
沐茗@煙燻機器人
另外這個問題的複製方法看起來好像是→拍照→照片完成之前pause app再resume app
此時拍照會先鎖A再鎖B
resume app這件事會先鎖B再鎖A,造成Deadlock
沐茗@煙燻機器人
如果把UI更新的部分拆到自己的thread,就會變成
Task1: 拍照(會鎖A),會開另一個條Thread,稱為Task2,讓那條Thread去鎖B跟處理UI
Task3: resume app會先鎖B再鎖A,原本會Dead lock的情況會變成

Task1鎖A
Task3鎖B, 等A
Task1產生Task2之後完成並釋放A
Task2等B
Task3取得A,執行完成,釋放A跟B
Task2取得B,執行完成
沐茗@煙燻機器人
應該會是這樣
舞喵🐾ꉂ(ˊᗜˋ*)
(???
克里斯蒂安公爵的帕妃小騎士
六月雪果茶 : 被忽略了
載入新的回覆