
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