私は楽しみのために何かをやっています、マルチスレッドを学ぼうとしていますスレッド への参照によって配列を渡す問題
しかし Arno は、process.h を介した私のスレッドはマルチスレッドにならないだろうと指摘しました。
私がやりたいと思っているのは、100 (または 10,000、実際には問題ではないと思います) の配列を持ち、各スレッドへの値の割り当てを分割することです。たとえば、4 つのスレッド = 割り当てられるスレッドごとに 250 の値。
次に、この塗りつぶされた配列を使用して、さらに計算を行うことができます。
ここに私が取り組んでいたコードがあります(これは機能しません)
#include <process.h>
#include <windows.h>
#include <iostream>
#include <fstream>
#include <time.h>
//#include <thread>
using namespace std;
void myThread (void *dummy );
CRITICAL_SECTION cs1,cs2; // global
int main()
{
ofstream myfile;
myfile.open ("coinToss.csv");
int rNum;
long numRuns;
long count = 0;
int divisor = 1;
float holder = 0;
int counter = 0;
float percent = 0.0;
HANDLE hThread[1000];
int array[10000];
srand ( time(NULL) );
printf ("Runs (use multiple of 10)? ");
cin >> numRuns;
for (int i = 0; i < numRuns; i++)
{
//_beginthread( myThread, 0, (void *) (array1) );
//???
//hThread[i * 2] = _beginthread( myThread, 0, (void *) (array1) );
hThread[i*2] = _beginthread( myThread, 0, (void *) (array) );
}
//WaitForMultipleObjects(numRuns * 2, hThread, TRUE, INFINITE);
WaitForMultipleObjects(numRuns, hThread, TRUE, INFINITE);
}
void myThread (void *param )
{
//thanks goes to stockoverflow
//https://stackoverflow.com/questions/12801862/problems-passing-array-by-reference-to-threads
int *i = (int *)param;
for (int x = 0; x < 1000000; x++)
{
//param[x] = rand() % 2 + 1;
i[x] = rand() % 2 + 1;
}
}
機能しない理由を説明できる人はいますか?