矢量的子部分我有所述類型的無符號變量的矢量:排序在C++
vector<unsigned> a;
a.push_back(5); a.push_back(3); a.push_back(2); a.push_back(1);
a.push_back(12); a.push_back(4); a.push_back(20); a.push_back(11);
a.push_back(13); a.push_back(7); a.push_back(23); a.push_back(21);
現在我想創建3個線程,使得每個線程排序的矢量4個值。例如。
Thread 1: a[0],a[1],a[2],a[3]. After sorting their values become: 1,2,3,5
Thread 2: a[4],a[5],a[6],a[7]. After sorting their values become: 4,11,12,20
Thread 3: a[8],a[9],a[10],a[11]. After sorting their values become: 7,13,21,23
在所有的線程完成排序後,我打算通知現在這些值已排序。如果是的話,是否可以在C++中使用pthread來做同樣的事情,然後如何實現。我正在使用gcc 4.4。我知道可以按順序做同樣的事情,但我很想知道是否可以用多線程方式對這些線程進行排序?
編輯:我不能使用std ::異步,因爲我用gcc版本4.4的工作。我試圖將這個邏輯包含在一個已經在C++ 11之前編碼的舊代碼中。因此,我不能使用C++ 11。
提供給線程的地區是重疊的,是故意的嗎? – Arun
你在問一個XY問題。見http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem當你找出你真的想問什麼問題時,一定要編輯你的問題並更新它。 –
@Arun感謝您的評論。提供給線的區域將不重疊,例如a [0],a [1],a [2],a [3]屬於第一個線程,它們的排序順序爲1,2,3,5。同樣,[4],a [5],a [6],a [7]屬於第二個線程,它們的排序順序爲4,11,12,20。因此,這些區域不重疊 –