Page 27 -
P. 27
● 전역 변수 num을 만듭니다.
● 각 스레드는 num에서 값을 하나씩 가져옵니다. 가져온 값이 소수인지 판별합니다.
● 소수면 배열 primes에 찾은 숫자를 넣습니다. 1
● 모든 스레드가 일을 마치고 나면 소수를 출력합니다. 멀티스레딩
그림 1-16은 이 과정을 코드로 표현한 것입니다.
그림 1-16 개선된 소수 찾기 프로그램
int num = 1;
main() Array<int> primes;
{
Array<Thread> threads;
for (i = 0; i < 4; i++)
threads.Add(BeginThread(ThreadProc)); TreadProc()
{
for (i = 0; i < 4; i++) while (num <= 1000000)
{ {
threads.waitForExit(); if (Isprime(num))
} primes.Add(num);
printNumbers(primes); num++;
} }
}
그리고 실제 구동되는 코드를 만들어 봅시다.
코드 chapter_1\prime_number_errorneous
#include <vector>
#include <iostream>
#include <chrono>
#include <thread>
#include <memory>
using namespace std;
const int MaxCount = 150000;
const int ThreadCount = 4;
bool IsPrimeNumber(int number)
{
if (number = = 1)
return false;
if (number = = 2 || number = = 3)
return true;
for (int i = 2; i < number - 1; i++)
035