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

Буферы и синхронизация потоков - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как расширить консольное окно http://www.cyberforum.ru/cpp-beginners/thread1208524.html
Как расширить консольное окно, скажем на весь экран его растянуть
C++ C++ Описать структуру с именем DETAL, которая содержит следующие поля: Описать структуру с именем DETAL, которая содержит следующие поля: - Name - название детали; - Sort - сорт изделия; - Date-дата изготовления (структура: day; month, year - день, месяц, год); ... http://www.cyberforum.ru/cpp-beginners/thread1208519.html
C++ Ошибка в коде С++ (сортировка)
как сделать так, чтоб выводило нормальный массив?
C++ Зашифровать файл, используя исключающее или
Здравствуйте. Задача: Есть файл, в котором записаны какие-то символы. Надо поочередно брать каждый символ и менять в нем 1 на 0 и 0 на 1 с помощью XOR. Например, символ 'a' это 01100001....
C++ Структуры в языке C++ и не только http://www.cyberforum.ru/cpp-beginners/thread1208487.html
Вообщем, предыстория такая: для зачета нужно сдать 14 лабораторных, 11 из которых уже выполнено. Все бы ничего, но есть такие, которые в упор не осознаю в полной мере. В данном случае структуры и...
C++ В одномерном массиве, состоящий из n действительных элементов, вычислить: В одномерном массиве, состоящий из n действительных элементов, вычислить: 1) количество элементов массива, лежащих в диапазоне от A до B; 2) сумму элементов массива, расположенных после... подробнее

Показать сообщение отдельно
Praktolock
65 / 65 / 1
Регистрация: 29.11.2011
Сообщений: 300

Буферы и синхронизация потоков - C++

15.06.2014, 14:36. Просмотров 742. Ответов 21
Метки (Все метки)

Всем привет. Суть такова: есть(будет) некая софтина которая подгружает плагины(дмнамические библиотеки) создает поток с функцией из этого плагина и весь обмен происходит через буферы, которые нужно блокировать ну чтобы там писать/читать одновременно нельзя было. Для каждого плагина ровно 2 буфера, 1 для вывода из плагина, 1 для ввода. Не хочу использовать платформенно зависимые средства и буст тоже использовать не хочу. Оцените пожалуйста, бегло просмотрев, как оно норм работать будет? Ну именно блокирование.

buffer.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#pragma once
#include <vector>
 
struct STBUFFER
{
 std::vector<char>data;//а может и не вектор, еще я не решил
 int rbisy;
 int wbisy;
 STBUFFER();
 void gonnawrite();
 void gonnaread ();
 void finishedwrite();
 void finishedread ();
 
 int read(char*, int);
 int write(char*, int);
};
buffer.cpp
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
#include "buffer.h"
 
STBUFFER::STBUFFER()
{
 rbisy=0;
 wbisy=0;
};
 
void STBUFFER::gonnawrite()
{
 while(rbisy>0){/*какаянибудь пурга*/};
 wbisy++;
};
 
void STBUFFER::finishedwrite()
{
 wbisy--;
};
 
void STBUFFER::gonnaread()
{
 while(wbisy>0){/*какаянибудь пурга*/};
 rbisy++;
};
 
void STBUFFER::finishedread()
{
 rbisy--;
};
 
int STBUFFER::read(char*_buf, int _sz)
{
 gonnaread();
 //читаем, удоляем
 finishedread();
 return(0);
};
 
int STBUFFER::write(char*_buf, int _sz)
{
 gonnawrite();
 //пишем
 finishedwrite();
 return(_sz);
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru