개발자 Q&A

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

2025.07.14 00:58

Threaded::pop 관련 질문

목록
  • SOLID원칙수호자 5일 전 2025.07.14 00:58
  • 40
    1
제가 현재 C++ 프로그래밍을 공부중에 있습니다.
여러 쓰레드가 공유하는 데이터를 관리할 때, Threaded::pop 함수를 사용하여 데이터를 꺼내는 방법에 대해 궁금합니다.
Threaded::pop 함수의 동작 원리를 설명해주시거나, 예제 코드를 통해 어떻게 사용하는지 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  5일 전



    Threaded::pop 함수는 스택이나 큐와 같은 자료구조에서 데이터를 꺼내는 함수입니다. 이 함수는 멀티 쓰레드 환경에서 데이터를 안전하게 꺼내는 데 사용됩니다.

    Threaded::pop 함수의 동작 원리는 다음과 같습니다.

    1. 데이터가 있는 경우, 데이터를 꺼내서 반환합니다.
    2. 데이터가 없는 경우, 예외를 발생시킵니다.

    예제 코드를 통해 Threaded::pop 함수를 사용하는 방법을 살펴보겠습니다.

    #hostingforum.kr
    cpp
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    #include 
    
    
    
    class ThreadedQueue {
    
    private:
    
        std::queue queue_;
    
        std::mutex mutex_;
    
        std::condition_variable cv_;
    
    
    
    public:
    
        void push(int data) {
    
            std::lock_guard lock(mutex_);
    
            queue_.push(data);
    
            cv_.notify_one();
    
        }
    
    
    
        int pop() {
    
            std::unique_lock lock(mutex_);
    
            cv_.wait(lock, [this] { return !queue_.empty(); });
    
            int data = queue_.front();
    
            queue_.pop();
    
            return data;
    
        }
    
    };
    
    
    
    int main() {
    
        ThreadedQueue queue;
    
    
    
        std::thread thread1([&queue] {
    
            for (int i = 0; i < 10; ++i) {
    
                queue.push(i);
    
            }
    
        });
    
    
    
        std::thread thread2([&queue] {
    
            for (int i = 0; i < 10; ++i) {
    
                std::cout << "Thread 2: " << queue.pop() << std::endl;
    
            }
    
        });
    
    
    
        thread1.join();
    
        thread2.join();
    
    
    
        return 0;
    
    }
    
    


    위 예제 코드에서는 ThreadedQueue 클래스를 정의하여 데이터를 안전하게 꺼내는 데 사용합니다. Threaded::pop 함수는 데이터가 있는 경우 데이터를 꺼내고, 데이터가 없는 경우 예외를 발생시킵니다.

    2025-07-14 00:59

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

검색

게시물 검색