PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 請教一個 thread 和 queue 的問題
作者:
Shuhaur
(D.K.)
2022-03-15 13:11:42
問題(Question):
為什麼在一個 thread 裡把資料 push 進去,同一個 thread 還能拿的出資料,
但用另一個 thread 去拿就會拿不到資料呢?
程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔)
https://ideone.com/zxlJa7
作者: ctrlbreak
2022-03-15 13:42:00
置底13戒-5 應該是吧XD
作者:
Shuhaur
(D.K.)
2022-03-15 15:06:00
好像是這樣…我來試試,感謝
作者:
Schottky
(順風相送)
2022-03-15 15:13:00
對就是一樓說的那樣
作者:
Dracarys
(MayShowGunMore)
2022-03-15 15:30:00
何不用std::string就好了?還有language mode設C++17以上你的data會和std::data相撞
https://godbolt.org/z/4jGrT4jTd
作者:
Shuhaur
(D.K.)
2022-03-15 16:41:00
哇,這程式碼好帥…之所以不用 string 是因為我後面要寫socket, 所以會用到 byte 的 bitset...
作者:
MasterChang
(我愛ASM)
2022-03-15 23:25:00
queue不是thread-safe的
作者:
peter98
(新兵)
2022-03-16 03:21:00
你這問題應該跟thread沒關係 XD不然你在outString印一下data.size()試試 肯定是1你code的問題在於line 23那個str[10]不見了(local)
作者:
Dracarys
(MayShowGunMore)
2022-03-16 07:18:00
要c-style string可以再呼叫std::string::c_str可以跟傳統C API對接,或是用string_view這種non-owning view做操作,小弟一些淺見不知道這能不能符合你的需求。用std::string好在它會取得那塊記憶體的ownership,不用自己管理。
作者:
Shuhaur
(D.K.)
2022-03-16 10:00:00
嗯,跟thread沒關係,我試著直接call function 也是一樣改用string的話,socket 用 char[] 接資料轉存string另一個thread 可以拿出string, 但再用c_str 轉回 char資料就不是原本的樣子了~
作者:
Schottky
(順風相送)
2022-03-16 16:10:00
今天的問題是和 thread 無關,但你這樣寫遲早踩到地雷
作者:
tomsawyer
(安安)
2022-03-20 04:57:00
data那個不是全域變數嗎?跟第五戒有關?
作者:
peter98
(新兵)
2022-03-20 08:06:00
是23行有問題 不是那個data有問題.....................
作者: dreamroad (...)
2022-04-01 21:33:00
local變數的記憶體指標離開scope之外無效,你要克服的是記憶體管理的議題。
繼續閱讀
[閒聊] C++ 支援相依型別的話會長怎樣?
CoNsTaR
[問題] 寫後端適合QT框架嗎?
Isaea
[問題] 為什麼會印兩次child
abcd991276
[問題]關於YOLOv4檢測結果座標和和準確率原始碼
bbcc11598
Re: [問題] 二維陣列指標表示方法
Dracarys
[問題] 二維陣列指標表示方法
lllll12b56
[問題] is_nothrow_move_constructible 相關問題
alan23273850
[分享] 高清 1080P C++面向对象高级编程(侯捷)
descent
[問題] 從主程式移出函數遇到exception thrown
Vvvahc
[問題] [QT] 為什麼GUI卡住了...
liu2007
Links
booklink
Contact Us: admin [ a t ] ucptt.com