consumer.c
来自「用c++包装好的线程库,直接拿来使用,提高效率.」· C语言 代码 · 共 81 行
C
81 行
#define __THREADS_MAIN#include <thread.h>#include <threads/signal_num.h>#include <iostream>#include <string>extern "C" {# include <sys/wait.h># include <unistd.h>};using namespace std;using namespace cpp_threads;Cond t_control;Mutex t_link;string s;class producer : public Pthread {public: producer() { }; ~producer() { }; int thread(void *) { char *buf = new char[80]; cout << "Enter text for consumer: "; cout.flush(); cin.getline(buf,80); cout << "got '" << buf << "'\n"; t_link.lock(); s = buf; t_control.signal(); t_link.unLock(); delete buf; return 0; }};class consumer : public Pthread {public: consumer() { }; ~consumer() { }; int thread(void *) { int r; t_link.lock(); t_control.wait(t_link); cout << "Consumed: '" << s << "'\n"; r = s.length(); t_link.unLock(); return r; }};int main(){ Pthread* p1, *p2; p1 = new consumer; p2 = new producer; p1->run(); p2->run(); p1->join(); cout << "return value " << p1->retcode() << endl; delete p2; delete p1;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?