[問題] 同時執行好幾個迴圈是用thread來解決嗎?

看板C_and_CPP (C/C++)作者 (Terry)時間14年前 (2011/09/23 00:17), 編輯推噓6(6033)
留言39則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) vc++ 2008 問題(Question): 請教一下 我的程式裡會丟一些資料(數字),給vector,可能會變成下面這種結果 vector「0」有: [6] [5] [6] [9] vector「1」有: [2] vector「2」有: [6] [8] [4] [8] [7] [8] vector「3」有: [8] [3] [4] [7] [5] vector「4」有: [3] [7] [2] [6] 會有0~4這些vector,這些vector裡面,會有我隨機丟的一些[數字] ,然後現在我想要“同時“執行5個迴圈,去讀這些vector的資料,印出來 請教一下,是否就是要使用thread呢? 我有查詢過一些用法可是還是不太清楚,希望前輩們能給一些方向和指導 謝謝幫忙。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.100.113

09/23 00:24, , 1F
#pragma omp parallel for ??
09/23 00:24, 1F

09/23 00:28, , 2F
OpenMP?這個我不太會用,我去查查看,謝謝您
09/23 00:28, 2F

09/23 00:32, , 3F
你的「同時」是指怎樣的同時?
09/23 00:32, 3F

09/23 00:33, , 4F
如果是五個迴圈真的同時會被送進CPU 那就要thread
09/23 00:33, 4F

09/23 00:34, , 5F
如果是 v0進一步 → v1進一步 → v2進一步 ... 這種的
09/23 00:34, 5F

09/23 00:34, , 6F
嗯,就是五個迴圈一起執行。
09/23 00:34, 6F

09/23 00:35, , 7F
可以去找 C++ 的 coroutine library
09/23 00:35, 7F

09/23 00:35, , 8F
嗯 你需要的是thread
09/23 00:35, 8F

09/23 00:35, , 9F
不過thread看好久,還是不太清楚
09/23 00:35, 9F

09/23 00:36, , 10F
OPENMP似乎也是thread?
09/23 00:36, 10F

09/23 00:36, , 11F
不過還在查資料...謝謝幫忙了
09/23 00:36, 11F

09/23 00:36, , 12F
把五個迴圈分別寫成function
09/23 00:36, 12F

09/23 00:37, , 13F
然後用 boost::thread 去產生 thread
09/23 00:37, 13F

09/23 00:40, , 14F
好,謝謝,我先去找一下怎麼寫thread...語法不熟..
09/23 00:40, 14F

09/23 00:43, , 15F
openmp 是用 thread 實現沒錯,想學的話有本書推薦~
09/23 00:43, 15F

09/23 00:43, , 16F
Multithreading Applications in Win32 , 侯 sir 中譯.
09/23 00:43, 16F

09/23 01:20, , 17F
模擬queue行為模式?
09/23 01:20, 17F

09/23 01:29, , 18F
不是耶,只是單純的想要知道怎麼執行多個迴圈而已@@
09/23 01:29, 18F

09/23 01:29, , 19F
知道這個後,後序才會有一些想法來改我的程式
09/23 01:29, 19F

09/23 01:29, , 20F
先來找看看這本書,謝謝
09/23 01:29, 20F

09/23 02:41, , 21F
用迴圈一個一個跑,對人類來說也跟同時差不多了XD
09/23 02:41, 21F

09/23 02:45, , 22F
看了敘述, 還是沒感覺到用"同時"的目的與意途.
09/23 02:45, 22F

09/23 02:46, , 23F
也有可能跟他之前問過的UDP有關?
09/23 02:46, 23F

09/23 09:31, , 24F
怎麼會扯到我之前的問題去@@?
09/23 09:31, 24F

09/23 09:32, , 25F
我只是想了解如何同時執行多個迴圈而已
09/23 09:32, 25F

09/23 09:32, , 26F
最後的目的,是要讓這迴圈裡面的資料,同步執行
09/23 09:32, 26F

09/23 09:33, , 27F
經過某種演算法執行後,可以讓這些迴圈裡面的資料
09/23 09:33, 27F

09/23 09:33, , 28F
可以達到負載平衡
09/23 09:33, 28F

09/23 09:34, , 29F
thread 是獨立, 用thread並不等同於"同步"
09/23 09:34, 29F

09/23 09:34, , 30F
不過這都是後面的事情了,所以我想要先了解如何同時
09/23 09:34, 30F

09/23 09:34, , 31F
執行多個迴圈..這樣子而已..
09/23 09:34, 31F

09/23 09:35, , 32F
可以達到負載平衡 不像是 模擬queue行為模式嗎?
09/23 09:35, 32F

09/23 09:35, , 33F
我查詢過thread,好像同步的說法裡面會有mutex
09/23 09:35, 33F

09/23 09:36, , 34F
所以不確定是否能夠真的達到同時做多個迴圈的做法..
09/23 09:36, 34F

09/23 09:37, , 35F
不是耶,我是想寫一個網路模擬器的演算法
09/23 09:37, 35F

09/23 09:37, , 36F
沒有共用資源的話, 愛怎麼用thread就怎麼用.
09/23 09:37, 36F

09/23 09:38, , 37F
OK,我先找那本書,其它的在來研究看看,謝謝幫忙
09/23 09:38, 37F

09/23 09:38, , 38F
算了, 不跟你辯這個queue了.
09/23 09:38, 38F

09/23 09:42, , 39F
然後, 同步 不等於 同時. (所以還是要看你對同時的定義)
09/23 09:42, 39F
文章代碼(AID): #1EUr-Pt7 (C_and_CPP)
文章代碼(AID): #1EUr-Pt7 (C_and_CPP)