Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <condition_variable>
- #include <mutex>
- #include <thread>
- #include <iostream>
- #include <queue>
- std::queue<int> items_;
- std::condition_variable cv;
- std::mutex mutex_;
- void Push(int item) {
- std::unique_lock<std::mutex> lock(mutex_);
- items_.push(item);
- if (items_.size() == 1) {
- cv.notify_all();
- }
- }
- void Pop(int& item) {
- std::unique_lock<std::mutex> lock(mutex_);
- while (items_.empty()) {
- cv.wait(lock);
- }
- item = items_.front();
- items_.pop();
- }
- void Process() {
- int el;
- std::cin >> el;
- Push(el);
- Pop(el);
- std::cout << el;
- }
- int main() {
- std::thread t1 = std::thread(Process);
- std::thread t2 = std::thread(Push);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement