Интернет магазин китайских планшетных компьютеров |
|
Компьютеры - POSIX Threads - Пример12 мая 2011Оглавление: 1. POSIX Threads 2. Пример Пример использования потоков на языке C: #include <stdio.h> #include <stdlib.h> #include <time.h> #include <pthread.h> static void wait_thread { time_t start_time = time; while == start_time) { /* do nothing except chew CPU slices for up to one second. */ } } static void *thread_func { int i; for { fputs; wait_thread; } return NULL; } int main { int i; pthread_t thread; if != 0) { return EXIT_FAILURE; } for { puts; wait_thread; } if != 0) { return EXIT_FAILURE; } return EXIT_SUCCESS; } Пример использования потоков на языке C++: #include <cstdlib> #include <iostream> #include <memory> #include <pthread.h> class Thread { private: pthread_t thread; Thread; // copy constructor denied static void *thread_func { d)->run; } public: Thread {} virtual ~Thread {} virtual void run = 0; int start { return pthread_create(&thread, NULL, Thread::thread_func, this); } int wait { return pthread_join ; } }; typedef std::auto_ptr<Thread> ThreadPtr; int main { class Thread_a:public Thread { public: void run { for ) std::cout << "a " << std::endl; } }; class Thread_b:public Thread { public: void run { for) std::cout << " b" << std::endl; } }; ThreadPtr a ); ThreadPtr b ); if != 0 || b->start != 0) return EXIT_FAILURE; if != 0 || b->wait != 0) return EXIT_FAILURE; return EXIT_SUCCESS; } Представленные программы используют два потока, печатающих в консоль сообщения, один, печатающий 'a', второй 'b'. Вывод сообщений смешивается в результате переключения выполнения между потоками или одновременном выполнении на мультипроцессорных системах. Отличие состоит в том, что программа на C создает один новый поток для печати 'b', а основной поток печатает 'a'. Основной поток ждёт завершения дочернего потока. Программа на C++ создает два новых потока, один печатает 'a', второй, соответственно, 'b'. Основной поток ждёт завершения обоих дочерних потоков. Просмотров: 2585
|