powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Многопоточность и библиотеки С / С++
22 сообщений из 22, страница 1 из 1
Многопоточность и библиотеки С / С++
    #39387459
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В книге Д.Харта "Системное программирование в среде Windows" написано, что библиотека С не расчитана на многопоточную работу: промежуточные переменные библиотечных функций создаются в общей памяти процесса и поэтому могут изменять значения друг друга. Дескать, Microsoft создала многопоточную библиотеку LIBCHT.LIB и надо работать именно с ней, а потоки создавать / удалять методами _beginthreadex / _endthreadex.

Книга написана в 2005 году, поэтому хочется узнать насколько эта информация актуальна. Тот же вопрос хочется прояснить касательно библиотеки С++.

Буду рад подсказкам.
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39387477
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В целом актуально и будет актуально, т.к. потокобезопасные алгоритмы заметно медленнее небезопасных аналогов.

В С++11 добавили набор классов для организации многопоточной работы. Вместо _beginthreadex можно использовать <thread>
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39387494
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если функция нереентерабельна - см.описание, то ее в многопоточке применять нельзя.

Таких мало.

Собственно, однопоточная библиотека у MS уже давно не существует - как и ключи компилятора /ML /MLd. Похоже, что последняя версия, их поддерживавшая, была VS 6.0
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39387500
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLВ книге Д.Харта "Системное программирование в среде Windows" написано, что библиотека С не расчитана на многопоточную работу:
....
Книга написана в 2005 году, поэтому хочется узнать насколько эта информация актуальна.



Эта информация либо устаревшая, и я не верю, что книга написана в 2005ом, а не в 1994 ом, либо ты не так продаешь информацию, немного неверно пересказываешь.

библиотека С РАСЧИТАНА на многопоточную работу, хотя изначально это было не всегда так, и её сильно переписывали.

но не каждую функцию можно использовать из разных потоков. Можно или нет - написано в документации, надо каждый раз смотреть.

теперь подробно


[В книге Д.Харта "Системное программирование в среде Windows" написано, что библиотека С не расчитана на многопоточную работу:

во-первых, Если это действительно о системном программировании, то автор может рекомендовать вообще не использовать CRT, большинство современных программ именно так и делают.


промежуточные переменные библиотечных функций создаются в общей памяти процесса и поэтому могут изменять значения друг друга.

это не так, в современном мире переменные в CRT либо стековые, либо в thread local storage, либо выделяются динамически.
в старых версиях CRT так было, но это было примерно 20 лет назад.

Дескать, Microsoft создала многопоточную библиотеку LIBCHT.LIB и надо работать именно с ней,

возможно, автор ведет речь о разных версиях CRT, их много, в виде .dll и статической библиотеки, с поддержкой многопоточности и без нее, почти во всех сочетаниях.
современные программы в 90% используют динамический рантайм, а он всегда с поддержкой многопоточности.

ну и да, ты должен понимать, какой версией CRT ты можешь пользоваться в своей программе, а какой - нет.

а потоки создавать / удалять методами _beginthreadex / _endthreadex.

да, так надо делать, это позволяет сделать инициализацию переменных CRT, специфичных для создаваемого потока.
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388223
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SiemarglЕсли функция нереентерабельна - см.описание, то ее в многопоточке применять нельзя.

А где в описании это написано? Вот например функция wcscpy_s: https://msdn.microsoft.com/ru-ru/library/td1esda9.aspx
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388247
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivЭта информация либо устаревшая, и я не верю, что книга написана в 2005ом, а не в 1994 ом, либо ты не так продаешь информацию, немного неверно пересказываешь.

http://s020.radikal.ru/i707/1701/98/8377be178c70.jpg

http://s010.radikal.ru/i312/1701/d8/3f6e85a6ec68.jpg

Хотя тут ( https://msdn.microsoft.com/ru-ru/library/abx4dbyh.aspx) в первом абзаце написано: "Все версии библиотек CRT поддерживают разработку многопоточного кода". Так что книжка неактуальная получается.


MasterZivно не каждую функцию можно использовать из разных потоков. Можно или нет - написано в документации, надо каждый раз смотреть.

Не нашел в описании функций подобной информации. Можно пример?


MasterZivво-первых, Если это действительно о системном программировании, то автор может рекомендовать вообще не использовать CRT, большинство современных программ именно так и делают.

А почему такой накат на язык С? Какие у него недостатки и что лучше использовать взамен?
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388285
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL"Все версии библиотек CRT поддерживают разработку многопоточного кода". Так что книжка неактуальная получается
От того что CRT сделали многопоточной сам язык Си никак не изменился, а книжка про него.
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388297
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Книга "Системное программирование в среде Windows" морально устарела даже не потому что С изменился (он особо не менялся), а потому что на момент ее написания последним виндовсом был XP. С тех пор в WinAPI много чего добавилось, в т.ч. связанное с многопоточностью.
Книгу не читал, но как понимаю она вовсе не про С, а про WinAPI. Код на С написан потому что из него проще всего с WinAPI работать.

Ты бы определился что ты хочешь изучать: С или использование WinAPI. Это разные вещи.
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388321
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dima TОт того что CRT сделали многопоточной сам язык Си никак не изменился, а книжка про него.

Можно объяснить как между собой связаны библиотека CRT и библиотека языка С?
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388323
Фотография NekZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLМожно объяснить как между собой связаны библиотека CRT и библиотека языка С?
Наверное, тем, что CRT -- C RunTime library. То есть, это и есть библиотека языка C.
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388335
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLDima TОт того что CRT сделали многопоточной сам язык Си никак не изменился, а книжка про него.

Можно объяснить как между собой связаны библиотека CRT и библиотека языка С?
CRT это и есть библиотека С

Например один и тот же код С
Код: plaintext
1.
if(!wcscpy_s(...)) printf("wcscpy_s error %d\n", errno);


при использовании однопоточной CRT может отработать некорректно, а многопоточная гарантирует что проблем не будет.
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388520
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivбиблиотека С РАСЧИТАНА на многопоточную работу, хотя изначально это было не всегда так, и её сильно переписывали.
strtok -тоже?
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388523
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилMasterZivбиблиотека С РАСЧИТАНА на многопоточную работу, хотя изначально это было не всегда так, и её сильно переписывали.
strtok -тоже?
https://msdn.microsoft.com/ru-ru/library/2c8d19sb.aspx Каждая функция использует локальную для потока статическую переменную для разбора строки на токены. Следовательно, несколько потоков могут одновременно вызывать эти функции без нежелательных эффектов.
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388834
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилMasterZivбиблиотека С РАСЧИТАНА на многопоточную работу, хотя изначально это было не всегда так, и её сильно переписывали.
strtok -тоже?

да, а в чем проблема?
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388862
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv, можно попросить вас ответить на вопросы? Они для меня очень важные.

MasterZivно не каждую функцию можно использовать из разных потоков. Можно или нет - написано в документации, надо каждый раз смотреть.

Не нашел в описании функций подобной информации. Можно пример?

MasterZivво-первых, Если это действительно о системном программировании, то автор может рекомендовать вообще не использовать CRT, большинство современных программ именно так и делают.

А почему такой накат на язык С? Какие у него недостатки и что лучше использовать взамен?
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388993
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot AlekseySQL

А почему такой накат на язык С? Какие у него недостатки и что лучше использовать взамен?[/quot]

Где я такое писал?
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39388994
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot AlekseySQL

Не нашел в описании функций подобной информации. Можно пример?

[/quot]


https://msdn.microsoft.com/ru-ru/library/2c8d19sb.aspx

Читать "Примечание".

http://www.cplusplus.com/reference/cstring/strtok/

читать от слов "The point where the last token was ..."
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39389019
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv, Спасибо!
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39389105
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivИзопропилпропущено...

strtok -тоже?

да, а в чем проблема?
проблема в том, что таки нет
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39389141
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилMasterZivпропущено...


да, а в чем проблема?
проблема в том, что таки нет

таки нет что?
говори уж прямо, без этих вот намеков...
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39389151
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про МС уже дал ссылку выше, они все глобальные переменные рантайма у разных потоков в разные места разнесли, в TLS или еще куда, вот и получился многопоточный рантайм. Насчет других компиляторов не в курсе.
...
Рейтинг: 0 / 0
Многопоточность и библиотеки С / С++
    #39389216
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TПро МС уже дал ссылку выше, они все глобальные переменные рантайма у разных потоков в разные места разнесли, в TLS или еще куда, вот и получился многопоточный рантайм. Насчет других компиляторов не в курсе.


во всех компиляторах примерно одно и то же.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Многопоточность и библиотеки С / С++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]