
Tishka17
14.06.2019
12:34:46

Aragaer
14.06.2019
12:35:41
гонка будет

Denis
14.06.2019
12:35:43

Tishka17
14.06.2019
12:35:56

Google

koder
14.06.2019
12:36:05

Aragaer
14.06.2019
12:36:07
и как же?

Denis
14.06.2019
12:36:14
Очередь проще делать на семафорах, а семафоры через кондвар

koder
14.06.2019
12:36:43
Через фьютекс
по апи это одно и то же. фютекс просто иногда быстрее

Denis
14.06.2019
12:36:51

koder
14.06.2019
12:37:01

Denis
14.06.2019
12:37:44
в чем разница?
Мьютекс защищает критическую секцию, а фьютекс блокируется и ждет пробуждения

koder
14.06.2019
12:37:58

Denis
14.06.2019
12:38:02
Если мьютекс захвачен, его может отпустить только тот же поток, который его захватил

koder
14.06.2019
12:38:09
футекс - это fast mutex

Denis
14.06.2019
12:38:24
Глянь man futex

Google

koder
14.06.2019
12:38:36
он сначала делает спин-лок, а если спин лок не срабатывает - уходит в полноценный мютекс
к критической секции это не имеет никакого отношения

Denis
14.06.2019
12:38:57
На нем можно реализовать мьютекс, да
Кондвар тоже можно, а вот кондвар на мьютексе уже нет

koder
14.06.2019
12:39:15

Denis
14.06.2019
12:40:05

Aragaer
14.06.2019
12:40:42
кондвар делается на мьютексе, но для работы кондвара нужен еще один мьютекс

koder
14.06.2019
12:40:47

Denis
14.06.2019
12:41:16

koder
14.06.2019
12:41:17
https://en.wikipedia.org/wiki/Futex
а семафор нельзя сделать через мютекс?
семафор это мютекс и счетчик

Denis
14.06.2019
12:41:44
Ну покажи, как его через мьютекс сделать

koder
14.06.2019
12:41:59
ты серьезно? мне все погуглить за тебя?

Denis
14.06.2019
12:42:11
Да, погугли, пожалуйста

Aragaer
14.06.2019
12:42:11
семафор на одном мьютексе опять же не делается

koder
14.06.2019
12:42:12
вот тебе сверху описание того, что такое futex

Aragaer
14.06.2019
12:42:21
ну или счетчик атомарный

koder
14.06.2019
12:42:22
это спинлок+мютекс

Denis
14.06.2019
12:42:44
Я не про устройство фьютекса спрашиваю

Google

Aragaer
14.06.2019
12:42:46
а впрочем я не знаю

Denis
14.06.2019
12:43:03
А про то, как сделать семафор только на мьютексах

Alex
14.06.2019
12:43:40

Denis
14.06.2019
12:43:45
Хотя бы псевдо

koder
14.06.2019
12:46:40
захватываешь блокировку, смотришь на значение счетчика, если с ним все ок - меняешься его (вверх или вниз, в зависимости от операции), если уменьшил - смотришь на счетчик ожидающих. Если он не ноль - анлокаешь второй мютекс. Освобождаешь основной мютекс.
Если захватить не удалось - увеличиваешь счетчик ожидаюзиз и захватываешь (возможно два раза) второй мютекс и висишь на нем

Denis
14.06.2019
12:47:25

koder
14.06.2019
12:48:17

Alex
14.06.2019
12:48:21

Denis
14.06.2019
12:49:23
https://linux.die.net/man/3/pthread_mutex_unlock
If a thread attempts to unlock a mutex that it has not locked or a mutex which is unlocked, undefined behavior results.

koder
14.06.2019
12:52:19
это какие-то быстрые посиксовые локи - PTHREAD_MUTEX_DEFAULT. Стандартные линуксовые можно и локать два раза и анлокать откуда угодно
вот futex https://eli.thegreenplace.net/2018/basics-of-futexes/
atomic + спинлок + mutex

Denis
14.06.2019
12:55:19
Это futex, а не mutex
У него семантика другая
И питоновские локи таки сделаны на семафорах
https://github.com/python/cpython/blob/d0eeb936d8daf05d7d89f6935e3f4c0dee49c5be/Python/thread_pthread.h#L422

Iliya
14.06.2019
12:59:06

Denis
14.06.2019
12:59:50
Всем привет, кто может подсказать, ставлю тулзу ей нужно подключение к mysql
Я установил кучу разных пакетов для этого, но ничто не помогает
rpm -qa | grep MySQL
MySQL-python-1.2.5-1.el7.x86_64
python2-PyMySQL-0.9.2-2.el7.noarch
python27-MySQL-python-1.2.3-11.el7.x86_64
pip list | grep mysql
mysql-connector-python 8.0.16
Использую python 2.7 и CentOS 7
Ошибка: https://pastebin.com/mnAjKip0

koder
14.06.2019
13:01:20

Vladimir
14.06.2019
13:02:48

Google

Denis
14.06.2019
13:03:25
еще раз - все примитивы сонхронизации можно сделать на мютексах. Семафоры над ними расширители апи, значит все можно сделать, при желании, и на семафорах. Но мы не обсуждали на чем оно конкретно сделанно - мы обсуждали как его можно сделать. Питоновский кондишенал можно сделать на питоновских мютексах.
По поводу футекс - ты говорил, что это совсем не мютекс, у него другое апи. Это совершенно неверно. Вверху ссылка. Футекс имеет то же самое апи что и мютекс (имена функций ессно другие), только иногда он быстрее
Если брать классический мьютекс, который, например, в стандартной библиотеке С++, то на нем (эффективный) семафор сделать нельзя. Если питоновский, у которого внутри семафор и который работает медленнее, то можно, да. И wait+wake это по смыслу совсем не то же, что acquire+release

Denis
14.06.2019
13:03:47

koder
14.06.2019
13:05:53
Если брать классический мьютекс, который, например, в стандартной библиотеке С++, то на нем (эффективный) семафор сделать нельзя. Если питоновский, у которого внутри семафор и который работает медленнее, то можно, да. И wait+wake это по смыслу совсем не то же, что acquire+release
сори, моя логика кончилась, мы ходим по кругу. "эффективность" ни раз не обсуждалось, это вообще другой и очень сложный вопрос

Denis
14.06.2019
13:06:20
Эффективностью я тут называю отсутствие бесконечного спинвейта
С ним, конечно, в юзерспейсе все можно сделать

Irina
14.06.2019
13:34:41
#работа #москва #удаленка
Выбрать оптимальный микрокомпьютер и написать на него софт на Python/С
Оплата обсуждаема
Нужен СТО в команду Kidsy (https://kidsy.tech), который сможет подобрать микрокомпьютер для реализации всех нужных нам функций в игрушке. Потом придумать, как все будет взаимодействовать на уровне софта
И написать софт на микрокомпьютер (это может быть софт под Unix ядро или Unix ядро с софтом на уровне ядра или просто Linux скрипты или BareMetal или ещё что-то, нужно обсуждать)
Кого заинтресует, здесь более подробное описание: https://docs.google.com/document/d/1gq0MM-VFiRfBGux8qLIJBkGEw6fCWzlW_Z03ZJIJ9ng/edit


Sergey
14.06.2019
13:38:13
Товарищи, направьте пожалуйста на правильный путь. Есть сервис с кучей задач, всё это управляется через cron (сами задачи - management-комманды Django). Чем дальше, тем сложнее и неуклюжей становится система. Понял что нужно делать через Celery, но встал вопрос выбора брокера - по факту выбираю между Reddis и RabbitMQ. Пытаюсь по обзорам понять разницу и выбрать, но уверенности нет. Судя по всему нужно брать RabbitMQ, т.к. возможности намного шире. Но есть опасение что он куда сложнее в настройке. Подскажите, какой вариант потимальный? От чего должен зависеть выбор?

koder
14.06.2019
13:40:27
<капитан мод>reddis и rabit довольно сильно отличаются по АПИ. Запише требования к мессежденгу, которые у вас есть и сравните с возможностами обоих </капитан мод>

Sergey
14.06.2019
13:41:10
Различаются по сложности или просто по разному организованы?

Tishka17
14.06.2019
13:41:46
на редисе лучше делать очередь заданий, которые можно потом если что перегенерировать

Denis
14.06.2019
13:41:59
Комрады, а есть какой-то тул для проверки валидности docstring? Что описанные аргументы на самом деле обьвлены у функции например?

Sergey
14.06.2019
13:43:14

Tishka17
14.06.2019
13:43:32
в смысле, редис бери если меньше требования к надежности

Sergey
14.06.2019
13:45:00
ок, понял, спасибо

Tishka17
14.06.2019
13:45:37
я бы взял реббит
очрееди на редисе - это все таки не очень стандартное применение его

Sergey
14.06.2019
13:47:09
Блин, похоже я с начала не так понял. Т.е. для брокера лучше реббит? Это не будет overkill?

Tishka17
14.06.2019
13:48:04
overkill - это если бы кафку взял

Sergey
14.06.2019
13:48:20
были такие мысли поначалу))

Tishka17
14.06.2019
13:50:01
выглядит как будто реббит ставить ну очень просто

Google

Pavel
14.06.2019
13:50:42
не хочешь rabbitmq - можешь посмотреть на crossbar.io (WAMP)

Sergey
14.06.2019
13:51:39
Не, дело не в том, что не хочу
У меня опыта в этом вопросе ровно 0, пытаюсь понять что мне нужно.

Pavel
14.06.2019
13:52:17
в общем, софта такого очень много. просто RabbitMQ(AMQP) долгое время был "решением по умолчанию", хотя сейчас постепенно теряет позиции
из твоих сообщений вообще говоря не очень понятно, какие у тебя критерии выбора

Sergey
14.06.2019
13:54:40

Pavel
14.06.2019
13:55:32

Sergey
14.06.2019
13:57:00

Tishka17
14.06.2019
13:57:26
Вообще, крон - это выполнение по расписание. А брокеры сообщений - это доставка событий

Pavel
14.06.2019
13:57:34
я что-то не очень понял, как ты от крона к сельдерею (не к ночи будь помянут) пришёл?
ты видимо гуглил что то в духе "taskrunner"?

Sergey
14.06.2019
13:58:01

Pavel
14.06.2019
13:58:21
если ты берёшь сельдерей, то бери редис