|
0 / 0 / 0
Регистрация: 02.11.2012
Сообщений: 33
|
||||||
Синхронизация потоков05.11.2012, 19:04. Показов 5855. Ответов 18
Метки нет (Все метки)
Программа должна работать так: один поток печатает свой id пишет время, спит 20 секунд, потом опять пишет время. После завершения работы первого потока тоже самое должен сделать второй поток. У меня проблема в том, что я не могу их разделить, по идее это должна делать функция pthread_join(), как я это понял, но ничего подобного не происходит.
Другая проблема, не могу понять какие надо использовать спецификаторы для printf что бы время и pid выводились на экран в нормальном виде, а не 8-значными отрицательными числами. Вот мой код:
0
|
||||||
| 05.11.2012, 19:04 | |
|
Ответы с готовыми решениями:
18
Синхронизация потоков Синхронизация потоков. Нужны ли они? Синхронизация потоков с++ |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
||
| 05.11.2012, 19:12 | ||
|
Ты вызвал pthread_create и создал два потока, они работают параллельно, а не друг за другом. Если нужно синхронизация, то используй любой механизм доступный для нее. Либо создавай второй поток, когда закончил работу первый.
0
|
||
|
0 / 0 / 0
Регистрация: 02.11.2012
Сообщений: 33
|
|
| 05.11.2012, 23:28 [ТС] | |
|
То, есть вы хотите сказать, что функция pthread_create() создает его и сразу же выполняет??
Добавлено через 13 минут просто, как я понял, я вызываю два раза функцию pthread_create(), тем самым создаю два потока, а потом с помощью функции pthread_join() передаю управление сначала одному потоку, потом другому
0
|
|
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|||||
| 05.11.2012, 23:45 | |||||
http://cs.mipt.ru/docs/courses... hread4.htm
0
|
|||||
|
0 / 0 / 0
Регистрация: 02.11.2012
Сообщений: 33
|
||||||
| 06.11.2012, 02:35 [ТС] | ||||||
|
В общем спустя пару часов я въехал, что делают эти функции, теперь пытаюсь передать из одного потока массив в другой поток, который должен его напечатать и оно у меня благополучно виснет, в чем проблема, подскажите плз.
Документацию не читал, и до вашего сообщения понятия о ней не имел.
0
|
||||||
|
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
|
||||||
| 06.11.2012, 17:02 | ||||||
|
А обязательно на каждом шаге блокировать? Проще нельзя
надо бы тоже исправляться
1
|
||||||
|
0 / 0 / 0
Регистрация: 02.11.2012
Сообщений: 33
|
|
| 07.11.2012, 00:42 [ТС] | |
|
Та меня вообще не учили им пользоваться, сразу cin cout использовал с самого начала, а в линуксе оказывается по умолчанию нету хэдера iostream и с их подключением много возни... Про спецификаторы %i и %ld узнал только вчера когда код писать начал, для меня он почти что новый если можно так сказать, да как и в прочем программирование потоков...та и линукс в общем
0
|
|
|
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
|
||
| 07.11.2012, 15:48 | ||
|
Не по теме: Понятие "научить программировать" вообще утопия ИМХО. Человека нельзя научить программировать, пока он сам не научиться... Так что толковую книжку и побольше практики-практики... руку набьете, будет легче.... Так с реализацией вашей задачки что делать будем, вопрос решен или будем на каждом шаге синхронизировать?
0
|
||
|
0 / 0 / 0
Регистрация: 02.11.2012
Сообщений: 33
|
|||
| 07.11.2012, 19:34 [ТС] | |||
|
Добавлено через 11 минут
0
|
|||
|
0 / 0 / 0
Регистрация: 02.11.2012
Сообщений: 33
|
|
| 08.11.2012, 00:48 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 02.11.2012
Сообщений: 33
|
|||||||
| 14.11.2012, 23:51 [ТС] | |||||||
0
|
|||||||
|
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
|
||||||
| 15.11.2012, 16:43 | ||||||
|
Что-то понравились мне события... пробую... пишу без проверки, простите, нет времени
Кстатите не уверен, что ваша реализация с rwlock'ом правильная... Поменяйте местами запуски потоков... что-то мне подсказывает, что мусор напечатает, хотя я толком не работал с rwlock, помню только теоретически.
0
|
||||||
| 15.11.2012, 17:01 | |||||||||||||
Писатель никогда не блокируется, а читатель не на каждом шаге блокируется.
1
|
|||||||||||||
|
1265 / 979 / 384
Регистрация: 02.09.2012
Сообщений: 3,026
|
||
| 15.11.2012, 17:14 | ||
Ваш вариант мне требует осмысления...! Писатель поднимает семафор на каждой итерации, а читатель при каждой следующей итерации опускает его, при нуле ждет поднятия? Я правильно уловил? Да, точно, должно работать.
0
|
||
| 15.11.2012, 17:31 | ||
|
Соответственно писатель после того как записал что-то увеличивает счетчик доступных ресурсов на единицу. Читатель уменьшает счетчик при чтение. Если счетчик равен 0, то читатель блокируется до того момента, пока состояние счетчика не измениться.
0
|
||
|
1259 / 650 / 44
Регистрация: 06.02.2011
Сообщений: 1,654
|
|
| 17.11.2012, 21:46 | |
|
0
|
|
| 17.11.2012, 21:46 | |
|
Помогаю со студенческими работами здесь
19
Синхронизация потоков на элементарном уровне (переключение потоков)
Синхронизация потоков синхронизация потоков Синхронизация потоков Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Оттенки серого
Argus19 18.03.2026
Оттенки серого
Нашёл в интернете 3 прекрасных модуля:
Модуль класса открытия диалога открытия/ сохранения файла на Win32 API;
Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
|
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-rectangles-sdl3-c. zip
finish-rectangles-sdl3-cpp. zip
|
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие.
Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
|
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ВВЕДЕНИЕ
Выполняя задание на управление насосной группой заполнения резервуара,. . .
|
|
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|