Alexander "SonnySlave"
ничего себе
Олександр
Обновляемая триалка на 90 дней :)
Oleg
бле, надо брать!
Vlad
это шикарная новость
Vlad
спасибо!
Alexander "SonnySlave"
и тут я охуел, честно говоря
Vsevolod
да непонятно на самом деле, есть ли в этом icc какой-то смысл по сравнению с современными шлангом и gcc
Vlad
судя по вебархиву появилось между сентябрем и 8 декабря
Vlad
а в инструментах
Vsevolod
mkl?
Vlad
VTune бесплатно для коммерсов
Vsevolod
я для опенсорсного проекта взял parallel studio
Alexander "SonnySlave"
Vlad
ага
Vsevolod
так и не смог запустить - там какая-то строго оперделенная версия редхата нужна
Alexander "SonnySlave"
я для опенсорсного проекта взял parallel studio
к сождалению у меня не опенсорс на работе
Vsevolod
ну, я для этого тут работу меняю :)
Vsevolod
опенсорс все-таки писать приятнее
Vsevolod
как минимум потому что есть мощный мотив писать хорошо и красиво
Oleg
VTune оче хорош
Vsevolod
да, вот ради vtune я эту parallel studio и брал, а запустить толком не удалось - так и остался на perf'е
Alexander "SonnySlave"
по крайней мере на убунте и федоре
Vsevolod
могу, но у меня сейчас узкое место - это gc luajit'а
Vsevolod
с gc64 все стало получше, поэтому вылезли еще хеш таблицы, у которых не инлайнится hash/cmp функции
Vsevolod
но в случае си пилюля - это омерзительные конструкции с макросами :(
pavel
Рекурсивного лока требуется избежать. Надо залочиться только 1 раз и при попытке войти в лок второй раз - сделать голимый return; не совершая работы.
pavel
а pthread_mutex_trylock чем не устраивает?
Мне надо лочиться в других потоках, но избежать лочения в текущем.
Anatoly
Мне надо лочиться в других потоках, но избежать лочения в текущем.
а в место лока из текущего ты попадаешь по рекурсии?
Pavel
а pthread_mutex_trylock чем не устраивает?
try не спасает от дедлока
pavel
Да, по рекурсии.
Anatoly
Да, по рекурсии.
тогда правильный вариант: сделать публичный интерфейс с локами, и приватный интерфейс без локов
pavel
Есть одна либа. Она входит в некий код. Код по замыслу работал без рекурсии. Но один злой чувак придумал перехватывать этот код за жопу и в обработчике у него снова идёт вызов моей либы, которая снова генерит ему то, что он перехватывает.
Pavel
если анлоков там в итоге столько же сколько локов, то просто присобач туда рекурсивный мютекс
pavel
то есть, ты даже не можешь повлиять на опции создания мьютекса
Могу, но рекурсивный мне не нужен. Есть подозрение, что рекурсия будет бесконечной.
Pavel
лол. а стек вы где взяли бесконечный чтобы беспокоится не о нем, а о мютексах?
Anatoly
тогда остается ему набить морду
Vitaliy ◀️TriΔng3l▶️
И набить морду, если будет >=2
pavel
А счётчик atomic если сделать?
Ну да, можно сделать счётчик thread_local...
Vitaliy ◀️TriΔng3l▶️
Ну да, можно сделать счётчик thread_local...
ой, это уже не так приятно
pavel
ой, это уже не так приятно
Ну а как ещё, мне надо потоки-то разделять.
Vitaliy ◀️TriΔng3l▶️
Значит, сразу морду набить
Vitaliy ◀️TriΔng3l▶️
А контекста нет никакого у тебя?
pavel
Есть.
Vitaliy ◀️TriΔng3l▶️
Есть.
Можно туда какие-нибудь флажки для коллбеков добавить, что когда разрешено
Anatoly
Ну да, можно сделать счётчик thread_local...
так это и будет решением в данном случае.
Pavel
ну и с thread_local не атомик же
Vitaliy ◀️TriΔng3l▶️
Есть дебильное решение, но для винды, а не для pthreads)
Vitaliy ◀️TriΔng3l▶️
Просто вспомнил, что движок Source таким образом проверяет, не запущен ли уже хоть один его экземпляр)))))
Vitaliy ◀️TriΔng3l▶️
Мьютекс не critical section, а тот, что в ядре, и WaitForSingleObject с нулевым таймаутом)))
Anatoly
ну и с thread_local не атомик же
погоди, а чего ты опасаешься? void call_lib_func() { thread_local static bool busy = false; if( busy ) { busy = false; return; } busy = true; lib_func(); }
Pavel
ну я и говорю, не атомик. там выше атомик предлагали.
Anatoly
зачем тредовой переменной атомик?
Vitaliy ◀️TriΔng3l▶️
Да я не подумал, что эта функция может независимо вызываться на нескольких потоках
Pavel
Да я не подумал, что эта функция может независимо вызываться на нескольких потоках
не, ты всё правильно сказал. ты ж ничего про thread_local не говорил, только про атомик.
Pavel
я же так, чисто напомнить. вы чтото вцепились )
Pavel
рыть в сторону сорцов рекурсивных мьютексов
не удивлюсь если там внутрях примерно тоже, что анатолий написал
Alexander "SonnySlave"
давай не сюда
Alexander "SonnySlave"
Спасибо за понимание 😊
p
можно интимный вопрос?
p
можно сказать что return -1 в коде это runtime error?
p
нет
просто для меня это тоже очевидно вроде как, но мне скинули какую то фигню (https://imgur.com/a/eVxuf), которая вообще судя по всему к какому то отдельному конкурсу относится и я даже не знаю как ответить. есть где в инете где то классификация эта дебильная? по гуглению везде рассказывают как решить эти ошибки)
Oleg
Посоны, я вам тут радио прнес: https://github.com/fulldecent/system-bus-radio
Дмитрий ⬡
В этой олимпиаде втч считается, что если код ошибки процесса не нулевой, то она упала. Причём ей не важно, это программист налажал или на самом деле там прилетел Segfault и убил.
Дмитрий ⬡
Так что выход с ненулевым кодом в приличных сообществах означает рантайм ошибку или неудачу, да, но не является рантайм ошибкой само по себе. Например, test — команда под Unix — возвращает 1 или 0, если условие, которое она проверяла, неверно или верно.
Дмитрий ⬡
Это, конечно, мощно.
Чуваки не осознали стандарт, бывает.
Дмитрий ⬡
ну а в интернетах есть где то эта классификация? типа compile/linking/run time, logical errors,... или это все так, по понятиям
Зачем? Где очень ннада — а именно какие-то соревнования и тестирующие системы — у каждого всё выписано.
Anonymous
По procxx.kepka трабл можно сюда?