
Побитый
23.05.2018
21:56:46

Aidar
23.05.2018
21:56:58
Нет там ничего про потокобезопасность я уверен на 99%
Хотя я нагнал да

Google

Aidar
23.05.2018
21:58:20
Там написано
Буфферы не ломаются написано
Ещё больший повод выкинуть ио стек

Побитый
23.05.2018
21:59:51
Почему?

Aidar
23.05.2018
22:01:55
Concurrent access to a synchronized ([ios.members.static]) standard iostream object's formatted and unformatted input and output functions or a standard C stream by multiple threads shall not result in a data race.
[ Note: Users must still synchronize concurrent use of these objects and streams by multiple threads if they wish to avoid interleaved characters.
— end note
]
See also: ISO C 7.21.2

Побитый
23.05.2018
22:02:01
Буфферы не ломаются написано
У меня при записи с 4 потоков (использовал голый pthread) cout в рандомных местах ломается, fail возвращает true. Это значит что с разных потоков cout юзать нельзя?

Aidar
23.05.2018
22:02:03
sync_with_stdio(true)

Побитый
23.05.2018
22:06:02
А sync stream из 20-го стандарта как раз для этого нужен (чтоб с разных потоков использовать)? Или для чего то другого?

Aidar
23.05.2018
22:07:21
Почему?
Поясняю: внутри streambuf и iostream
a) динамический полиморфизм
б) неотключаемые локали
в) куча рантайм проверок каких-то флажков, состояний, каждый мать его символ
Куча это прям КУЧА

Побитый
23.05.2018
22:08:48
А альтернатива есть?

Aidar
23.05.2018
22:09:38
Нет

Google

Побитый
23.05.2018
22:10:13

Aidar
23.05.2018
22:10:35

Побитый
23.05.2018
22:12:53

Aidar
23.05.2018
22:13:38
Проверь tsanом
Правда ли там датарейс
И проверь что юзаешь си++ больше 11

Побитый
23.05.2018
22:35:48
Проверь tsanом
Чтоб его включить достаточно скомпилировать прогу с -fsanitize=thread?
Короче, tsan ничего не вывел (если я правильно его использовал), значит видимо data race действительно нет. Только что вспомнил, что я кроме вывода в cout с 4 потоков, ещё и отменяю 3 из них из четвертого через pthread_cancel(). Убрал из примера все упоминания об отмене и ошибок больше не возникает. Так что cout действительно потокобезопасный, проблема в отмене (буду копать дальше)

Surreal
23.05.2018
23:12:48
Это норма: https://godbolt.org/g/ggU3pz ?
^ В gcc для шаблонных структур можно делать using на приватный тип др. структур.
В остальных компиляторах фейлится. Кто прав?

isnullxbh
24.05.2018
02:26:57
Кажется, про это: https://stackoverflow.com/questions/27960268/c11-why-is-private-member-template-accessible-outside-class

Surreal
24.05.2018
04:53:51
Оно, спасибо.

redl1ne
24.05.2018
05:48:23
А есть аналог асинхронного вызова queueuserapc?
Тоже самое ток с ntdll / ke

Nik
24.05.2018
06:26:25


Maxim
24.05.2018
06:50:35
Привет народ. Подскажите как правильно миксовать найтив и мменеджед код. У меня есть длл на c++ и статическая либа clr. К либе на плюсах подключаю clr. У меня на компе работает, а переношу на комп постарше и там падает, причем не получается даже дамп снять. Правильно ли это вообще подключать clr либу и компилить без флага /clr?

Friedrich
24.05.2018
06:52:16

Maxim
24.05.2018
06:54:10

Friedrich
24.05.2018
06:54:16
Дебагай.
В принципе всё нормально должно работать в таком сценарии. Но я пока ещё не понял, как ты линкуешься с либой.

Google

Maxim
24.05.2018
06:55:40
это создаётся статическая либа, её подключаю к другой, уже плюсовой
target_link_libraries(Sender)

Friedrich
24.05.2018
06:56:57
Гы, а так тоже можно было? :)

Maxim
24.05.2018
06:57:27
как так?)))

Friedrich
24.05.2018
06:58:47
Я не знал, что можно CLR-либы статически линковать. Думал, что только динамически.
Впрочем, примерно понятно, как оно работает. Должно, во всяком случае. Дебагай.

Maxim
24.05.2018
07:00:44

Friedrich
24.05.2018
07:00:54
Тогда приготовьтесь страдать!

Дед Пегас
24.05.2018
07:01:32

Aidar
24.05.2018
07:02:00
Может дотнет нетот?

Maxim
24.05.2018
07:03:24

Friedrich
24.05.2018
07:04:01
Обычно в этом случае он генерирует более внятные сообщения об ошибке. Но что ещё мы можем об окружении предположить, мы ж ничего про него больше не знаем.
Попробуй динамическую линковку, кстати говоря. Вдруг поможет. Ну, пальцем в небо.

Aidar
24.05.2018
07:05:09
Я не очень понимаю что такое статическая линковка дотнет дрисьни
Ну тоесть тут взаимоисключающие параграфы в предложении

Maxim
24.05.2018
07:11:29

Aidar
24.05.2018
07:13:07
Да можно то можно, но параграфы все равно взаимоисключающие

Spoonson
24.05.2018
07:13:46
всегда можно спрятать дотнет ассембли в ресурсы и подгрузить в рантайме если статикой не выходит

Nik
24.05.2018
07:27:57