0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 27
|
|
1 | |
Пинг-понг потоками10.04.2020, 23:41. Просмотров 1660. Ответов 13
Метки нет Все метки)
(
Ребят,всм привет!
Пытаюсь вникнуть в многопоточное программирование.Хочу сделать простую программу,чтобы было 2 потока, которые пишут в консоль поочередно пинг - понг и так бесконечно и строго друг за другом.Помогите разобраться в синхронизации.
0
|
|
10.04.2020, 23:41 | |
Сетевая программа по принципу "Пинг-понг" "Пинг-понг", нужно исправить ошибки Пинг-понг |
|
![]() 8394 / 3934 / 859
Регистрация: 15.11.2014
Сообщений: 8,882
|
|
10.04.2020, 23:47 | 2 |
начни своё вникание с осознания того, зачем вообще нужна многопоточность.
многопоточный - значит исполняющийся парралельно. если тебе нужно "строго друг за другом", значит тебе не нужна многопоточность.
1
|
11.04.2020, 10:47 | 3 | |||||
Я почему-то думал, что у мьютекса есть какая-то очередь блокировок, а выглядит так, будто он работает как spin-lock (проверил на InitializeCriticalSection - то же самое)
0
|
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 27
|
|
11.04.2020, 11:07 [ТС] | 4 |
Класс,спасибо.
А не могли бы вы прокомментировать строчку threads.emplace_back([&mx, &ping, &stop]() а именно передачу аргументов конструктору thread при создании объекта в векторе.
0
|
11.04.2020, 11:11 | 5 |
Это обычная lambda-функция
https://en.cppreference.com/w/cpp/language/lambda
0
|
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 27
|
|
11.04.2020, 11:22 [ТС] | 6 |
Понял,с ними я не знаком еще.
Спасибо огромное,изучу.
0
|
6918 / 5983 / 2710
Регистрация: 14.04.2014
Сообщений: 25,504
|
|
11.04.2020, 11:31 | 7 |
oleg-m1973, у mutex нет очереди. Эту тему обсуждали уже.
И как писали выше, потоки тут вообще не нужны.
0
|
6918 / 5983 / 2710
Регистрация: 14.04.2014
Сообщений: 25,504
|
|
11.04.2020, 11:43 | 9 |
И чему она обучает? Использовать потоки в непараллельном режиме?
Их будет сложно синхронизировать. Одним mutex не обойдёшься.
0
|
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 27
|
|
11.04.2020, 16:56 [ТС] | 11 |
А у меня еще тогда такой вопрос.В качестве аргумента в метод emplace_back мы должны передать объект потока.Но там стоит лямбда-функция.Получается происходит неявное преобразование в объект потока?Но я думал,что конструктор thread объявлен explicit?
То есть не очень понимаю как из лямбды получается объект потока,который добавляем в вектор?Что лямбда описывает действие в потоке - поятно. Спасибо.
0
|
11.04.2020, 17:00 | 12 |
![]() Решение
В emplace_back передаётся не объект, а параметры конструктора. Он сам потом вызывает конструктор объекта с этими параметрами.
0
|
0 / 0 / 0
Регистрация: 31.10.2017
Сообщений: 27
|
|
11.04.2020, 17:17 [ТС] | 13 |
Понял,спасибо большое!
0
|
Тематические курсы и обучение профессиям онлайн Профессия Разработчик на C++ (Skillbox) Архитектор ПО (Skillbox) Профессия Тестировщик (Skillbox) |
11.04.2020, 20:39 | 14 |
0
|
11.04.2020, 20:39 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь. Пинг Понг в C# Пинг-понг Пинг-понг Пинг-понг в excel Пинг-понг на Tkinter Игра пинг-понг Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |