Mutex - Возможно ли создать новый поток для участка кода18.11.2014, 13:51. Показов 1966. Ответов 9
Метки нет (Все метки)
А возможно ли создать новый поток для участка кода ? Добавлено через 21 минуту
один ,который есть всегда и созданный pthread То есть теперь не, очевидно , кто первым инициализирует переменную shared верно ? // Сейчас выдает 112
0
|
|||||||
| 18.11.2014, 13:51 | |
|
Ответы с готовыми решениями:
9
Создать программу, которая определяет классом mutex, какой поток отработал быстрее
Mutex не приостанавливает поток |
|
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
|
|||
| 18.11.2014, 16:27 | |||
1
|
|||
|
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
|
|
| 18.11.2014, 16:49 | |
|
К соажлению mutex не решит вашу проблему. Он не подходит логически для вашей задачи.
Просто mutex обеспечит лишь выполнение одного (какого-то) из потоков в единицу времени, причем того, кто быстрее сделает mutex_lock. Опять условие гонок. Вам нужна контролируемая очередность! То есть по завершению потоковой функции разрешить выполнить что-то. Или по завершению присваивания 999 разрешить выполнить что-то. Для первого случая можно тупо дождаться завершения потока pthread_join, Для второго случаю помогут "условия" pthread_cond_init и там еще 2-3 функции. Добавлено через 4 минуты Хотя и mutex тоже подойдет. Я не понял сразу примера. Ставьте mutex_lock перед shared=999 и перед вашим циклом где 112. И ставьте mutex_unlock после shared=999 и после pthread_create и printf. И будет гарантировано все время 112.
0
|
|
| 18.11.2014, 18:07 [ТС] | ||||||
|
grgdvo, да, вы правы,
это мне понятно я хочу получить пример , когда перед каждм запуском программы я получаю разные режзультаты я мошенально ,назвал тему mutex потому ,что думал о них а когда создал было уже поздно Мьтексами я могу достич ,последовательное выполнение это я понимаю я лишь хочу увидеть этот небольшой хаос , но пока достиг лишь такого результата изменил слегка код на
Результаты запусков: qazan@qazan:~/Desktop/ex$ ./a.out Maintain 111 Maintain 999 qazan@qazan:~/Desktop/ex$ ./a.out Maintain 111 Maintain 999 second thread 999 : qazan@qazan:~/Desktop/ex$ ./a.out Maintain 111 Maintain 999 qazan@qazan:~/Desktop/ex$ ./a.out Maintain 111 Maintain 999 second thread second thread 999 : qazan@qazan:~/Desktop/ex$ ./a.out Maintain 111 Maintain 999 qazan@qazan:~/Desktop/ex$ Добавлено через 5 минут Природу вывода 2 4эксперемента и предположить не могу Для остальных предполагаю ,что по окончанию вывода 1го printf второй поток завершил работу ,но такой же результат если я ставлю циклы перед созданием второго потока , то есть основной поток должен быть медленнее Как я думаю основной поток с вновь созданными как то на равне ,или я не прав
0
|
||||||
|
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
|
||||||
| 19.11.2014, 14:41 | ||||||
|
Ну вот так поиедее должен быть хаос... Может быть невсегда, но должен быть... Можете еще после каждого printf добавить fflush(NULL). И чем больше циклы, тем больше хаоса.
0
|
||||||
| 19.11.2014, 15:17 [ТС] | ||||||
|
grgdvo,
Писал это так ,чтобы время исполнения увеличить мне не ясно почему , выводиться 111 первым когда там цикл ,ңоторый заведомо дольше чем функция Хаос да , но под ним я подразумевал то ,что если бы эти функций были черными ящиками то хаос а когда так оячевидно ,кто дольше кого работает и тут результат не совпадает с моими ожиданиями да и ище непонятные исходы (2,4 в экспериментах) Все таки мне казалось , что распределение этого самого хаоса должно быть предсказуемым Добавлено через 2 минуты grgdvo, я кажеться понимаю потоки исполняею весь код ,как попало т е сперва один потом дроугой энное количество раз поэтому такие результаты Спасибо
0
|
||||||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
|
|||||||
| 19.11.2014, 15:27 | |||||||
0
|
|||||||
| 19.11.2014, 23:28 [ТС] | |||||||||||
|
grgdvo, результаты таковы
в эксперементах основной поток всегда выполняеться первым , потом дочерний Опять двадцать пять . Добавлено через 7 минут korvin_, rand() то мне зачем , я хочу получить разные результаты гонок В нынешних эксперементах , не получалоьс этого добиться подозреваю ,что дело было в оптимизациях копилятора Добавлено через 7 часов 52 минуты
Воот ,это то ,что я ждал :
0
|
|||||||||||
|
694 / 304 / 99
Регистрация: 04.07.2014
Сообщений: 851
|
|||||||
| 20.11.2014, 17:23 | |||||||
Сообщение было отмечено Памирыч как решение
Решение2. У тебя в коде с мютексами, они объявлялись дважды 3. Сделай паузу между выводом на экран, что бы успевали переключаться потоки, а то твои циклы они быстро обработают. 4. На создание потока нужно время, pthread_create отрабатывает на много раньше, чем начнётся выполняться новый поток ==> главный поток много чего ещё успеет сделать.
2
|
|||||||
| 20.11.2014, 17:23 | |
|
Помогаю со студенческими работами здесь
10
Как по нажатию на кнопку создать новый поток Создать новый поток на добавление элементов в коллекцию Составить блок-схему для небольшого участка кода Как записать регулярное выражения для этого участка кода?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
|
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
|
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию.
2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
|
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
|
|
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO
Апнулись до NET10.
Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта
так и в интерактивном режиме. из сложностей - чисто функциональный подход.
Решил. . .
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|