
	                	                 
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