回答編集履歴
4
訂正
test
CHANGED
@@ -1 +1,9 @@
|
|
1
|
+
スレッドに対するCPUの割り当てが異なる事により、発生している様です。
|
2
|
+
|
3
|
+
5スレッドの場合に、CPUの割り当てが大きく変化している様に見られます。
|
4
|
+
|
5
|
+
実際に正しいものの中でも、各スレッドが起動順に結果が現れない場合が見れます。ただ五千万回のwhileループが行われている内に追いついている様子です。
|
6
|
+
|
1
|
-
|
7
|
+
Linux環境でもスレッド数を多くするとスレッド間で遅れが発生して同様な現象が起こります。
|
8
|
+
|
9
|
+
|
3
変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
親モジュールの領域を更新する、スレッドですが、メモリをロック(mutex)する必要が有るかと思います。
|
2
変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
スレッドはフォークとは異なり親モジュールのコピーはされないので、親の領域のアドレスを渡すと、変化してしまうと考えます。ですので、ThreadArgsへは、値として渡して、freeは処理の最後で行われたらどうでしょうか。
|
1
|
+
スレッドはフォークとは異なり親モジュールのコピーはされないので、親の領域のアドレスを渡すと、実行中に変化してしまうと考えます。ですので、ThreadArgsへは、値として渡して、freeは処理の最後で行われたらどうでしょうか。
|
1
変更
test
CHANGED
@@ -1,3 +1 @@
|
|
1
|
-
|
1
|
+
スレッドはフォークとは異なり親モジュールのコピーはされないので、親の領域のアドレスを渡すと、変化してしまうと考えます。ですので、ThreadArgsへは、値として渡して、freeは処理の最後で行われたらどうでしょうか。
|
2
|
-
|
3
|
-
mallocした領域をwhileの前にfreeするのは、早い気がします。
|