Russian Qt Forum
Ноябрь 22, 2024, 22:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: Многопоточное вычисление функции  (Прочитано 10638 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #15 : Июнь 19, 2013, 19:22 »

Так?
Не так, если wthread первой захватит мутекс, она шлепнет char который еще не был введен. Не надо полагать что насовал мутексов побольше - и все дела.

Да, и откуда такая любовь к самому себе? (HighPriority)  Улыбающийся
Записан
qtest
Гость
« Ответ #16 : Июнь 19, 2013, 20:35 »

Оно делает тоже что и ваш код, только безопасно. Эта конструкция никогда не забудет освободить ресурс, что нельзя сказать о человеке. Улыбающийся
Это понятно, но в случае лок и анлок видно, где что открывается и где закрывается, а тут - не совсем.
Не так, если wthread первой захватит мутекс, она шлепнет char который еще не был введен. Не надо полагать что насовал мутексов побольше - и все дела.
Если убрать откуда-либо мутекс, путчар вообще будет работать без остановки.
Да, и откуда такая любовь к самому себе? (HighPriority)  Улыбающийся
На всякий случай, может испортиться статистика какого-нибудь вывода. Это нежелательно?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #17 : Июнь 20, 2013, 12:03 »

Если убрать откуда-либо мутекс, путчар вообще будет работать без остановки.
Так вот и используйте семафоры для остановки/синхронизации

На всякий случай, может испортиться статистика какого-нибудь вывода. Это нежелательно?
Да, нежелательно. Разве Вы наверняка знаете что именно эта нитка будет иметь больше работы? Нет, так зачем говорить ОС чаще отдавать упраление нитке все равно ждущей на getchar? Делайте по смыслу а не "на всякий случай"
Записан
qtest
Гость
« Ответ #18 : Июнь 21, 2013, 04:01 »

Так вот и используйте семафоры для остановки/синхронизации
Так вот в том и проблема, что семафоры я не понимаю, в самой первой программе тоже хотелось бы использовать их, а не вейт. Можете показать на этом примере как надо?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #19 : Июнь 21, 2013, 07:30 »

Так вот в том и проблема, что семафоры я не понимаю
Что именно не понимаете: как они работают или как их нужно использовать?
Напишите как вы понимаете их сейчас.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #20 : Июнь 21, 2013, 08:18 »

Так вот в том и проблема, что семафоры я не понимаю, в самой первой программе тоже хотелось бы использовать их, а не вейт. Можете показать на этом примере как надо?
Что-то Вы слишком пассивны
Код
C++ (Qt)
// write thread
while (true) {
theSemaphore.acquire();
putchar(c);
...
}
 
Нитка ждет на закрытом cемафоре. Когда др нитка сделает  theSemaphore.release() cемафор откроется, сработает putchar и затем снова ожидание. Дальше сами
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.181 секунд. Запросов: 22.