2013-06-05 4 views
1

부스트가 시작되었습니다. 내 코드가 뮤텍스를 잘 사용하는지 물어보고 싶다. 그것을 테스트하기 위해 1부터 n까지의 합계를 계산하는 코드를 작성했습니다. 뮤텍스 나쁜 보이는 않고, 그래서 내가 올바르게 사용 생각하지만, 그냥 물어 할C++ 부스트 스레드 및 뮤텍스

#include <boost/thread/mutex.hpp> 
#include <boost/thread/thread.hpp> 
#include <iostream> 

#define NUMBER 10 

boost::mutex mutex; 
unsigned long long sum = 0; 

class counter 
{ 
public: 
    counter() : count(0) { } 

    unsigned long long increment() 
    { 
     return ++count; 
    } 

private: 
    unsigned long long count; 
}; 

counter c; 

void count() 
{ 
    boost::mutex::scoped_lock scoped_lock(mutex); 
    unsigned long long i = c.increment(); 
    sum += i; 
    std::cout << "i=" << i << "\tsum=" << sum << std::endl; 
} 

int main(int, char*[]) 
{ 
    boost::thread_group thrds; 
    for (int i=0; i < NUMBER; ++i) 
    { 
     thrds.create_thread(&count); 
    } 
    thrds.join_all(); 

    system("pause"); 
    return 0; 
} 

결과가 좋은보고 ... 단지 뮤텍스를 시도 ... 바보 방법은 계산합니다하지만 난 n 개의 스레드를 사용 모든 것은 괜찮습니다. 조언 해 주셔서 감사합니다. 나와 다른 사람들에게 도움이되기를 바랍니다. ... 내가 전역 변수를 사용하지 것이다하지만

+6

이것은 codereview에 있어야합니다. –

답변

0

, 좋은 외모,하지만 당신의 예제에 대해 무엇 아니다

두 경우 그 실제가 아닌 감각을 생산할 수 있기 때문에 다른 곳에서 사용하는 경우에도 cout을 고정한다 스레드가 동시에 작업하고 있습니다.