→ Lipraxde: 提供 lock、unlock 09/01 12:20
→ Lipraxde: 是說 getLock 這樣寫好怪,有連結可以讓我觀摩一下嗎? 09/01 12:21
→ lovejomi: 沒有連結耶 內部的code 不只一個人這樣寫 @@ 09/01 12:30
→ Lipraxde: 可能第一個人寫下去後後面的接著抄吧... 09/01 18:18
→ lovejomi: 也許是這樣 但我是想探討 這種方式是否沒任何問題,如果 09/01 19:40
→ lovejomi: 沒有 這感覺很鑽漏洞的感覺 09/01 19:40
→ Lipraxde: 我是覺得不行啦,寫這種意圖怪怪的 code... 09/01 20:50
→ loveme00835: 你先想寫類別的目的是什麼? 是提供抽象化. 而 mutex 09/02 00:04
→ loveme00835: 目的就是要確保抽象化有被達成, 具體來說就是物件的 09/02 00:05
→ loveme00835: 狀態改變不會有意外發生. 你為了 mutex 反而增加和類 09/02 00:06
→ loveme00835: 別責任無關的方法, 你同事都不會覺得奇怪嗎? 一般有 09/02 00:07
→ loveme00835: mutex 也會經過封裝, 讓使用者傳入 callback 來間接 09/02 00:09
→ loveme00835: 存取物件, 實作可以參考 boost::with_lock_guard(), 09/02 00:10
→ loveme00835: 多做一層封裝在之後確定存取都在同一個 thread 之後 09/02 00:35
→ loveme00835: 也可以直接把 mutex 拿掉, client code 不需要做調整 09/02 00:35
→ loveme00835: 所以你會看到有些函式庫進 critical section 是給 09/02 00:37
→ loveme00835: callback 而不是明確地寫 lock 敘述 09/02 00:37
→ loveme00835: 當你在傳東西給 callback 的時候, 最好是用限縮後的 09/02 00:46
→ loveme00835: 介面, 看是要用 std::forward_as_tuple() 或是允取存 09/02 00:48
→ loveme00835: 取的成員放在 base class 內, 再怎麼樣都不會搞到把 09/02 00:48
→ loveme00835: 所有成員都變成 public, 那這樣你還寫 C++ 幹嘛呢 09/02 00:49
→ lovejomi: 抱歉我沒有跟上 請問寫一個Access inner class有什麼 09/03 10:25
→ lovejomi: 好處嗎? 為什麼不直接散裝getX/setX在Foo就好? 09/03 10:25
→ lovejomi: 我還沒理解精隨~ 這樣看起來caller必須多.access() 09/03 10:26
→ lovejomi: 如果有多個data member也是必須開getA getB 多個嘛? 09/03 10:26
→ loveme00835: 不做特別處理的單個成員 setter/getter 還不如不寫 09/03 11:10
→ loveme00835: access 是一個概念, 雖然本來的物件無法複製, 但存取 09/03 11:10
→ loveme00835: 權是可以被任意複製轉移的, 這是 OO 的設計, 仔細思 09/03 11:11
→ loveme00835: 考一個問題: 如果一個物件只允許你存取部分的資料成 09/03 11:12
→ loveme00835: 員, 那存取的介面是否應該直接開在這個類別裡? 還是 09/03 11:12
→ loveme00835: 把 "特定資料成員的存取權" 這個概念抽象化出來, 未 09/03 11:14
→ loveme00835: 如果要做 composition 也可以做在這個 Access 類別 09/03 11:15
→ loveme00835: 裡, 和目標物件無關 09/03 11:16