Re: [討論] 面試有鑑別度的問題??

看板C_and_CPP作者 (CA)時間11年前 (2013/01/08 16:22), 編輯推噓3(3010)
留言13則, 7人參與, 最新討論串8/14 (看更多)
※ 引述《QQ29 (我愛阿蓉)》之銘言: : L大你好 : 看完你的文章有些地方想請教 : 因為沒這方面觀念也不太知道你講的含意 : ===================================== : 3. 過 multithread 會爆炸 : 你要在 thread 邊界接下來 : ===================================== : 不太了解什麼叫做thread邊界? 一般來說是你拿來 join thread 的 function 或是 Thread::run 之類的成員函式 : ====================================== : 4. C++ 的 ABI 沒有標準 : 所以你可能要在 module 邊界接下來轉成 error code : ====================================== : 不太了解什麼叫做model邊界, 以及ABI 我查了一下相當的抽象, 有沒有比較好理解的解 : 釋呢? 比方說你包了一個 lib.h 和 lib.dll 給別人用, 這個 lib.h 裡提到的所有東西 就是 module 邊界, 你神聖不可侵犯的領土 ABI 嘛 ... 最簡單的例子是 name mangling C 沒有 overload, member function, namespace 這些東西 所以 void f() 在 linker 就是叫 f, 沒什麼好混淆的 (有可能會因為 calling convention 更動, 細節我忘了) 但是在 C++, 為了在 linker 分辨這些東西 同樣的 function 在 gcc 4.x 叫 _Z1fv 在 Visual C++ 10 叫 ?f@@YAXXZ compiler 改版之後也可能會改命名規則 就算是號稱 ABI 相容的 clang 和 gcc, 我也有發生過 crash 在某個 不知名 frame stack 裡過 : ====================================== : C++ 的 memory model 其實沒考慮到 thread : 所以如果在進入 multithread 之後才想要初始化 : 那祝你好運 :) : ====================================== : 不太懂甚麼叫做進入後才初始化耶@@ : 是說開一條thread : 在thread裡面呼叫getInstance做第一次的初始化 : 這樣有可能會造成main thread跟這條 thread沒有做好sync 造成getInstance那部出問題 : ? 正解 C++ 在這裡出的包可大了 : 另外~~ : 想請問 exception 發生時會讓程式的performance變很差的根本原因是什麼呢? : 看到一些比較淺的文章都是在用程式去測performance : 結論是exception 沒發生的話 效率是近乎一樣 : 但exception發生 會效率很差 : 不太了解 root cause~ : 謝謝 嗯, 通常是因為寫的人亂丟 exception (誤) stack unwinding 中 compiler 會插很多 code 所以變慢是可以理解, 但是變很慢, 個人偏見是誤用 比方說在 for 裡不停 throw 又不停 catch 之類 -- 自High筆記(半荒廢) http://legnaleurc.blogspot.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.53.41

01/08 16:53, , 1F
簡單講exception是例外 常常發生就不是例外了
01/08 16:53, 1F

01/08 20:18, , 2F
常常發生一定是 feature 不然就 spec XD
01/08 20:18, 2F

01/08 21:33, , 3F
是event |D 以前有聽過exception當event用 :D
01/08 21:33, 3F

01/08 23:22, , 4F
115...以為是113的 XD
01/08 23:22, 4F

01/09 11:14, , 5F
了解! 不過thread join那些 就算發生exception也catch不到吧?
01/09 11:14, 5F

01/09 11:15, , 6F
要在thread 的 body裡面 做try catch? 還是有別的方法
01/09 11:15, 6F

01/09 11:24, , 7F
exceptions要麼是要你採取動作回復程序狀態,要麼是
01/09 11:24, 7F

01/09 11:24, , 8F
要麼是讓你安全退出……所以要看具體問題,問題的
01/09 11:24, 8F

01/09 11:25, , 9F
本質並不因為它是個c++ exception而改變,重要的是
01/09 11:25, 9F

01/09 11:26, , 10F
你程序本身的異常處理邏輯。thread內catch住,然後
01/09 11:26, 10F

01/09 11:26, , 11F
該咋辦咋辦,對不起我是東北人 2333
01/09 11:26, 11F

01/09 17:23, , 12F
我覺得 QQ29 誤會了, 不是 pthread_join, 是你拿給
01/09 17:23, 12F

01/09 17:23, , 13F
pthread_join 的那個 function 要 catch(...)
01/09 17:23, 13F
文章代碼(AID): #1GwzTRBo (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1GwzTRBo (C_and_CPP)