→ Lipraxde: 這個...應該是 object pool 吧...? 10/28 21:15
→ firejox: 封包實際在傳也不會傳指標阿 10/28 21:20
→ loveme00835: 你知道 shared_ptr 是在 share 什麼東西嗎? 很明顯就 10/28 21:21
→ loveme00835: 是理解錯才會這樣寫 10/28 21:21
→ nh60211as: 我都不new,改用placement new,寫起來跟C有九成像 10/28 21:23
→ loveme00835: shared_ptr 是在 share ownership, 使用 shared_ptr 10/28 21:33
→ loveme00835: 即是把這個概念給寫進程式碼裡, 依照你的描述, 物件 10/28 21:33
→ loveme00835: 的 owner 應該是 pool 而不是 my_shared_ptr, 你程式 10/28 21:33
→ loveme00835: 碼這樣寫就是設計錯誤. 用 raw pointer 就能 share d 10/28 21:33
→ loveme00835: ata 才不需要什麼 smart pointer. 只要有人跟你說 sh 10/28 21:33
→ loveme00835: ared_ptr 是用來 share data 那就是在亂寫 10/28 21:33
→ johnjohnlin: 等等,我想一下 10/28 22:11
→ johnjohnlin: pool應該要own那些沒被my_shared_ptr own的object 10/28 22:20
→ johnjohnlin: 但是如果用raw pointer,我要怎麼知道shared_ptr 10/28 22:21
→ johnjohnlin: 不會再使用這個資料了? 10/28 22:21
→ johnjohnlin: 如果沒有額外包一層的話,我就必須每次都allocate 10/28 22:22
→ johnjohnlin: 新的資料,這是我想避免的事情 10/28 22:23
→ loveme00835: 這就是你在設計的時候應該要考慮的問題, 而不是便宜 10/28 22:24
→ loveme00835: 行事用 shared_ptr 然後才覺得慢想去改進它 10/28 22:24
→ loveme00835: 不清楚實際使用情境, 所以我沒辦法幫你解答這個問題 10/28 22:25
→ johnjohnlin: 對啊,所以我才在這邊看看有沒有人遇過類似的情境的 10/28 22:27
→ johnjohnlin: 不然以我目前想到的方法,shared就是個堪用的解法 10/28 22:27
→ loveme00835: 可以先看完這個影片再思考如何設計比較恰當 10/28 22:32
→ loveme00835: 就像我前面打的, 你實際使用上是怎麼樣? my_shared_p 10/28 22:41
→ loveme00835: tr 會被什麼類別 own? 這些類別的關係是怎樣? my_sha 10/28 22:41
→ loveme00835: red_ptr 會在多少個執行緒裏使用? 沒寫清楚要怎麼給 10/28 22:41
→ loveme00835: 你建議? 10/28 22:41
推 ucrxzero: 推推推 10/28 22:59
推 ucrxzero: 問一下樓上你覺得先上課了解RPC原理還是直接看thrift g 10/28 23:37
→ ucrxzero: RPC那些手冊動手做比較有用呢 10/28 23:37
→ ucrxzero: 我現在是前者 我抱持的心態就是反正我只要在意摳你的哪 10/28 23:39
→ ucrxzero: 個函式名稱要對上名字而已,這樣還要花錢嗎 10/28 23:39
→ ucrxzero: 更正 我是後者 10/28 23:39
推 ucrxzero: 這樣對我未來職涯走大型主從式架構設計有幫助嗎? 10/29 00:16
推 ucrxzero: 因為....thrift的手冊非常難啃... 10/29 00:24
→ Killercat: 其實這滿奇怪的,因為據我所知目前的shared_ptr他有 10/29 14:39
→ Killercat: 用replacement new/delete用類似memory pool的方式操作 10/29 14:39
→ Killercat: 除非我記錯了... 晚點看看C++17 STL實作先 10/29 14:40
→ Killercat: 因為這個要做pool太簡單了 大小是固定的.... 10/29 14:41
→ nh60211as: move(unique_ptr)之後存取unique_ptr好像是未定義行為 10/29 18:26
→ nh60211as: 阿抱歉當我沒說 10/29 18:27
→ sarafciel: 你文章在解的問題其實跟smart pointer沒什麼關係啦XD 10/29 21:22
→ sarafciel: 而且二樓的f大提到重點 你要做的是模擬封包傳遞的話 10/29 21:26
→ sarafciel: 丟指標其實是一個完全失真的做法 10/29 21:26
→ F04E: 拜託去弄一本Effective Modern C++來看 10/30 15:06
推 ucrxzero: 我讀過啦 還不是被嗆爆 10/30 15:08
→ F04E: 幹 讀過跟讀懂是兩回事 10/30 16:06
推 ucrxzero: 抱歉 10/30 18:48
→ johnjohnlin: 我也讀過啊 XD 10/31 11:53
→ johnjohnlin: 請問傳pointer會造成失真的理由是什麼呢,是執行速 10/31 11:54
→ johnjohnlin: 度嗎 10/31 11:54
推 LPH66: 打個比方: 你想模擬寄包裹, 但這模擬卻只寄了掛號號碼過去 10/31 12:57
→ sarafciel: 對 你在做的事相當於 告訴對方你的東西放你家的哪裡 10/31 15:40
→ sarafciel: 然後期待對方在他家裡的同一個地方找到一模一樣的東西 10/31 15:41
→ sarafciel: 你現在可以work只是因為 這兩人其實是住在同一間屋子 10/31 15:45
→ sarafciel: 用CS的話來講 就是thread間的memory space有一致性 10/31 15:47
→ sarafciel: 而這個一致性其實是一個很強的條件 不用到兩台機器 10/31 15:50
→ sarafciel: 光同一台機器兩個不同process就不會有這個條件了 10/31 15:51
→ sarafciel: 另外 十萬台法拉利跟十萬顆螺絲的運送成本很明顯不同 10/31 15:53
→ sarafciel: 但是因為你這邊都改用小紙條(指標)在傳遞了 10/31 15:55
→ sarafciel: 這兩個case的傳輸成本就會從差很大變成相當接近 10/31 15:56
推 CoNsTaR: 建議可以讀個 Linear logic (Linear types)? 11/01 04:43
→ CoNsTaR: 把你要做的事情都探討完了 11/01 04:43