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

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

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

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

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

15.06.2014, 14:36. Просмотров 705. Ответов 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);
};
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru