@ProCxx

Страница 2089 из 2477
Побитый
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
sync_with_stdio(true)
Не сработало(

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

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
Ну это же boost:asio. Можно, конечно, что-то навертухать или spawn заиспользовать. Вдруг понял, что у @NikBond не знает как состояние пошарить между двумя тредами.
С "пошарить" состояние проблем нет. А вот как должна выглядеть эта fsm... Ну и вообще хочется чтобы сценарий диалога был вынесен в отдельные функции, это выглядит как-то естественно и не запутано. Должен же быть какой-то другой выход?

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

Maxim
24.05.2018
06:54:10
Friedrich
24.05.2018
06:54:16
Дебагай.

В принципе всё нормально должно работать в таком сценарии. Но я пока ещё не понял, как ты линкуешься с либой.

Google
Maxim
24.05.2018
06:55:40
В принципе всё нормально должно работать в таком сценарии. Но я пока ещё не понял, как ты линкуешься с либой.
STRING(REPLACE "/EHsc" "/EHa" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) STRING(REPLACE "/RTC1" "" CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /clr") add_library(${PROJECT_NAME} STATIC "Sender.cpp" "Sender.h" "MessengerService.h")

это создаётся статическая либа, её подключаю к другой, уже плюсовой 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
всегда можно спрятать дотнет ассембли в ресурсы и подгрузить в рантайме если статикой не выходит

Страница 2089 из 2477