Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
FlynnCarsen
0 / 0 / 0
Регистрация: 31.05.2011
Сообщений: 10
#1

Программа писатель / читатель - C++

21.10.2011, 19:20. Просмотров 1658. Ответов 1
Метки нет (Все метки)

Подскажите плиз, как организовать программу, которая читает/пишет с многопоточной обработкой. т.е. программа что то записывает в буфер обмена и что-то считывает. Работают параллельно. Буфер обмена - общий
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.10.2011, 19:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Программа писатель / читатель (C++):

Массив структур. Структура «Читатель» - C++
поомогите ктонить. Структура «Читатель»: Фамилия И.О., номер читательского билета, название книги, срок возврата. Вывести читателей,...

Структура "Читатель библиотеки", не получается ввод времени - C++
нужно создать сруктуру, которая содержит номер читательского билетовфамилии авторовназвания книгиздательствагод изданиядата выдачисрок...

Создать структуру "Читатель" - C++
В читательском зале библиотеки для каждого заказа записывают фамилию читателя и его инициалы, название книги, дату и время заказа, дату и...

Задача писатель читатель - C++ WinAPI
Есть два процесса один информацию записывет в проекцию файла другой считывает . Возник вопрос мне надо чтобы процесс считывания и записи...

DVD-Writer: Чукча не читатель, чукча - писатель? - DVD, Blu-ray
Hello, All, mighty & witty! Уже второй раз нарываюсь. 1) NEC MD-3550A; 2) Optiarc AD-7170A. С CD все ОК. DVD пишут, но с высокой...

Хранимые процедуры - вывести список книг, которые брал читатель - Oracle
По введенной фамилии хочу что бы вывелись книги которые он брал. Написал следующий запрос и получил ошибку!!!! CREATE or replace...

1
xAtom
915 / 740 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
22.10.2011, 01:49 #2
FlynnCarsen, вот примерчик накидал не большой, синхронизация критической секции.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
#include <windows.h>
DWORD WINAPI  ThreadRead(LPVOID);
DWORD WINAPI  ThreadWrite(LPVOID);
CRITICAL_SECTION  section;
char  buf[32]; // глобальный общий буфер
 
int main(){
   HANDLE threads[2];
   DWORD  id;
   int  cycle = 7;
 
   ZeroMemory(&section, sizeof(CRITICAL_SECTION));
   // инициализируем критическую секцию
   InitializeCriticalSection(&section);
 
   // создаём потоки
   threads[0] = CreateThread(NULL, 0u, ThreadWrite, (LPVOID)&cycle, 0u, &id);
   threads[1] = CreateThread(NULL, 0u, ThreadRead,  (LPVOID)&cycle, 0u, &id);
 
   // пусть основной поток подождёт пока писатель и читатель не закончут работу
   WaitForMultipleObjects(2u, threads, TRUE, INFINITE);
   // удаляем критическую секцию
   DeleteCriticalSection(&section);
   CloseHandle(threads[0]);
   CloseHandle(threads[1]);
   puts("finally work threads...");
   getchar();
   return 0;
}
 
// поток-читатель, читает буфер после того как в него будут записаны данные
DWORD WINAPI  ThreadRead(LPVOID param) {
   int cycle = *(int*) param;
   while(cycle--) {
        EnterCriticalSection(&section);
        puts(buf);
        LeaveCriticalSection(&section);
   }
   return 0;
}
 
/* поток-писатель, когда он пишет в буфер в это время поток-читатель не может читать данные
    только после того как в буфер запишутся данные */
DWORD WINAPI  ThreadWrite(LPVOID param) {
   SYSTEMTIME lt;
   int cycle = *(int*) param;
   int cnt = 0;
   while(cycle--) {
         EnterCriticalSection(&section);
         GetLocalTime(&lt);
         sprintf(buf, "%d). %02d:%02d", ++cnt, lt.wMinute, lt.wSecond);
         Sleep(1000u);  // задержка сделана для демонстрации синхронизации
         LeaveCriticalSection(&section);
   }
   return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.10.2011, 01:49
Привет! Вот еще темы с ответами:

Вероятность того, что любой читатель придѐт в читальный зал в течение дня - Теория вероятностей
Вероятность того, что любой читатель придѐт в читальный зал в течение дня, равна 0,03. В библиотеке зарегистрировано 200 читателей. Найдите...

Какова вероятность того, что все три книги читатель уже прочитал раньше - Теория вероятностей
На книжной полке стоят 30 различных книг. Читатель, просмотрев их, обнаружил, что 10 книг он уже прочитал раньше. После этого он попросил...

Составить программу, которая запрашивает название романа и фамилию автора, а затем выводит сообщение «Писатель …… - автор романа…..» - Turbo Pascal
1. Составить программу, которая запрашивает название романа и фамилию автора, а затем выводит сообщение «Писатель …… - автор романа…..» ...

Программа не может быть запущена, т.к. на Вашем компьютере установлена программа-эмулятор - Игры
При запуске лицензионной детской игровой программы выскакивает сообщение: Программа не может быть запущена, т.к. на Вашем компьютере...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru