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

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

Войти
Регистрация
Восстановить пароль
 
 
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
#1

Заставить pthread подождать, до выполнения условия - C++

11.04.2014, 14:44. Просмотров 365. Ответов 18
Метки нет (Все метки)

есть поток типы pthread.
Нужно заставить его подождать, до выполнения условия
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2014, 14:44     Заставить pthread подождать, до выполнения условия
Посмотрите здесь:

Проверить матрицу на выполнения условия - C++
Проверить матрицу на выполнения условия AT = -A Помогите, пожалуйста. Не знаю как сделать

Вывести сообщение в случае выполнения условия - C++
Подскажите: Если в последнем цикле он не находит число,то как вывести на экран в этом случае ответ,вроде: Такого числа не найдено. ...

Вычислить значение s в зависимости от выполнения условия - C++
я пока полный ламер, а решение нужно, не могли бы вы помочь мне написать программу в С++, условие такое : S = x-y+z-t, если среди...

Определить значение переменной А в зависимости от выполнения определенного условия - C++
Дан вещественный массив S .Определить значения переменной А по следующему правилу : переменной присвоить значение 1, если положительных...

Двумерные массивы. Проверка условия после выполнения расчетов - C++
Дан двумерный массив. Составить программу, которая определяет максимальное из двух чисел: суммы элементов k-й строки и суммы элементов s-го...

Как сделать, чтобы после выполнения условия, программа не проверяла следующие? - C++
Мне нужно чтобы после вывода текста " нет значений x и z" программа больше ничего не выводила, но после этого она так же пишет " z равен" и...

Написать программу, которая будет обращать в ноль элемент матрицы в случае выполнения условия - C++
Задача: Написать программу, которая будет обращать в ноль элемент матрицы, если f(x)+ff(x)<0, где f и ff - некоторые функции, выполняющие...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
11.04.2014, 14:58     Заставить pthread подождать, до выполнения условия #2
condition_variable из 11 стандарта, или руками создать класс, и в нем будет метод wait() в нем вызывать что то вроде слипа до выполнения определенного условия
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
11.04.2014, 14:58  [ТС]     Заставить pthread подождать, до выполнения условия #3
насчет стандарта можно поподробнее или ссылку?
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
11.04.2014, 15:04     Заставить pthread подождать, до выполнения условия #4
Вот тут про них есть
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
11.04.2014, 15:09  [ТС]     Заставить pthread подождать, до выполнения условия #5
NMClient.cpp:68:3: error: ‘condition_variable’ is not a member of ‘std’
NMClient.cpp:68:27: error: expected ‘;’ before ‘cv’

C++
1
std::condition_variable cv;
Объявил как в примере.
Библиотеку добавил
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
11.04.2014, 15:29     Заставить pthread подождать, до выполнения условия #6
Цитата Сообщение от diplomat1129 Посмотреть сообщение
Библиотеку добавил
какую? Вы имеет ввиду заголовочный файл подключили?
а Ваш компилятор поддерживает 11ый стандарт с++?
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
11.04.2014, 15:31  [ТС]     Заставить pthread подождать, до выполнения условия #7
да.заголовочный файл.
у меня стоит mint 15.
компилятор g++
как проверить поддерживает ли?
и если не поддерживает то как быть?
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
11.04.2014, 15:48     Заставить pthread подождать, до выполнения условия #8
Цитата Сообщение от diplomat1129 Посмотреть сообщение
и если не поддерживает то как быть?
Цитата Сообщение от aLarman Посмотреть сообщение
или руками создать класс, и в нем будет метод wait() в нем вызывать что то вроде слипа до выполнения определенного условия
Цитата Сообщение от diplomat1129 Посмотреть сообщение
как проверить поддерживает ли?
посмотрите версию g++ -v и в инете загуглить что именно в данной версии g++ из 11го стандарта поддерживается
diplomat1129
0 / 0 / 0
Регистрация: 11.02.2013
Сообщений: 83
11.04.2014, 15:54  [ТС]     Заставить pthread подождать, до выполнения условия #9
а какие еще есть варианты кроме condition variable?
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
11.04.2014, 16:04     Заставить pthread подождать, до выполнения условия #10
diplomat1129, мне кажется я 2 раза его написал самому реализовать что то наподобие такой штуки псевдокод
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Cond_Variable
{
bool Result;
public:
Cond_Variable():Result(false){}
void notify()
{
Result = true;
}
void wait()
{
while(!Result)
{
usleep(1);
}
}
}
Добавлено через 1 минуту
правда реализация оч кривая, но есть над чем поразмыслить
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
12.04.2014, 00:11     Заставить pthread подождать, до выполнения условия #11
diplomat1129, так в pthread есть свой собственный condion_variable. Правильней всего использовать его. Там чуть пониже есть пример.

Цитата Сообщение от aLarman Посмотреть сообщение
правда реализация оч кривая, но есть над чем поразмыслить
Оно будет только делать вид, что ждет, а на самом деле дико жрать процессорное время...

Добавлено через 2 минуты
Цитата Сообщение от aLarman Посмотреть сообщение
condition_variable из 11 стандарта
Под Linux, кстати, std::condition_variable реализуется как раз через pthread. Как собственно и вся многопоточность из std::.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
13.04.2014, 12:01     Заставить pthread подождать, до выполнения условия #12
Цитата Сообщение от DrOffset Посмотреть сообщение
Оно будет только делать вид, что ждет, а на самом деле дико жрать процессорное время...
usleep же
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
13.04.2014, 12:49     Заставить pthread подождать, до выполнения условия #13
Цитата Сообщение от aLarman Посмотреть сообщение
usleep же
Разверни мысль.
aLarman
642 / 563 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
14.04.2014, 09:12     Заставить pthread подождать, до выполнения условия #14
ну будет переключение на другую задачау пока Usleep, с параметром 1 да будет %50 грузить если чуть больше сделать будет меньше грузить
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.04.2014, 10:01     Заставить pthread подождать, до выполнения условия
Еще ссылки по теме:

В заданных массивах найти количество элементов равных нулю и заменить их на -100 в случае выполнения условия - C++
Помогите пожалуйста. В массивах Х1..Х5, Y1..Y7, Z1..Z14 определить количество равных нулю элементов. Если их больше половины, то первый и...

Pthread - C++
при компиляции код работает и все выводит и выполняет алгоритм но стоит запустить с командной строки, выдает ошибку "Запуск программы...

Аргументы потоку pthread - C++
Добрый день, нужен совет как лучше написать запуск потоков структура для передачи в поток struct thread_arg { ...

<pthread.h> Где взять. - C++
Где ее взять.. скиньте пожалуйста ?или где взять подскажите...?гугл помог ну плохо...что то скачал ну не знаю что куда подключить.

не работает pthread.h в Dev-c++ - C++
не понимаю что не так. у меня винда. Программу пишу на Dev-cpp: вот код: #include&lt;stdio.h&gt; #include&lt;pthread.h&gt; class CData {...


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

Или воспользуйтесь поиском по форуму:
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
14.04.2014, 10:01     Заставить pthread подождать, до выполнения условия #15
aLarman, вот именно. Оно будет переключаться постоянно из-за малого интервала. Об этом я и говорил. ОС будет отдавать кванты времени потоку, который ничего не делает. А больший интервал поставить тоже нехорошо, потому что тогда может вноситься неприемлемая задержка в реакцию на события. Скажем, поступил сигнал о завершении, а мы все еще ждем таймаут.
Yandex
Объявления
14.04.2014, 10:01     Заставить pthread подождать, до выполнения условия
Ответ Создать тему
Опции темы

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