개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.08.02 22:20

parallelRuntime::run 관련 질문

목록
  • 해킹방어수호자 4시간 전 2025.08.02 22:20 새글
  • 1
    1
저는 parallelRuntime::run 함수를 사용하여 병렬 처리를 구현하려고 하는데,

여러 쓰레드가 동시에 작업을 수행하는 경우,

각 쓰레드의 결과를 어떻게 합치거나 관리할 수 있는지 궁금합니다.

또한, 쓰레드의 결과를 합치는 방법에 대해 더 자세한 설명이나 예시를 부탁드립니다.

    댓글목록

    profile_image
    나우호스팅  4시간 전



    parallelRuntime::run 함수는 여러 쓰레드가 동시에 작업을 수행할 수 있도록 도와줍니다. 각 쓰레드의 결과를 합치거나 관리하려면 다음과 같은 방법을 사용할 수 있습니다.

    1. Future: C++20부터 제공하는 Future 클래스를 사용할 수 있습니다. Future는 쓰레드의 결과를 기다릴 수 있도록 도와줍니다. 예를 들어, 다음과 같이 쓰레드의 결과를 합칠 수 있습니다.

    #hostingforum.kr
    cpp
    
    #include 
    
    
    
    std::future future1 = parallelRuntime::run([=]() { return 1 + 1; });
    
    std::future future2 = parallelRuntime::run([=]() { return 2 + 2; });
    
    
    
    int result = future1.get() + future2.get();
    
    


    2. std::vector: 각 쓰레드의 결과를 std::vector에 저장할 수 있습니다. 예를 들어, 다음과 같이 쓰레드의 결과를 합칠 수 있습니다.

    #hostingforum.kr
    cpp
    
    #include 
    
    
    
    std::vector results;
    
    
    
    results.push_back(parallelRuntime::run([=]() { return 1 + 1; }));
    
    results.push_back(parallelRuntime::run([=]() { return 2 + 2; }));
    
    
    
    int result = 0;
    
    for (int i : results) {
    
        result += i;
    
    }
    
    


    3. std::mutex: 쓰레드의 결과를 동기화할 수 있습니다. 예를 들어, 다음과 같이 쓰레드의 결과를 합칠 수 있습니다.

    #hostingforum.kr
    cpp
    
    #include 
    
    
    
    std::mutex mtx;
    
    int result = 0;
    
    
    
    parallelRuntime::run([&]() {
    
        std::lock_guard lock(mtx);
    
        result += 1 + 1;
    
    });
    
    
    
    parallelRuntime::run([&]() {
    
        std::lock_guard lock(mtx);
    
        result += 2 + 2;
    
    });
    
    


    4. std::atomic: 쓰레드의 결과를 원자적으로 관리할 수 있습니다. 예를 들어, 다음과 같이 쓰레드의 결과를 합칠 수 있습니다.

    #hostingforum.kr
    cpp
    
    #include 
    
    
    
    std::atomic result(0);
    
    
    
    parallelRuntime::run([&]() {
    
        result.fetch_add(1 + 1);
    
    });
    
    
    
    parallelRuntime::run([&]() {
    
        result.fetch_add(2 + 2);
    
    });
    
    


    이러한 방법 중 하나를 사용하여 쓰레드의 결과를 합치거나 관리할 수 있습니다.

    2025-08-02 22:21

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 40,970건 / 1 페이지

검색

게시물 검색