Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
В книге Д.Харта "Системное программирование в среде Windows" написано, что библиотека С не расчитана на многопоточную работу: промежуточные переменные библиотечных функций создаются в общей памяти процесса и поэтому могут изменять значения друг друга. Дескать, Microsoft создала многопоточную библиотеку LIBCHT.LIB и надо работать именно с ней, а потоки создавать / удалять методами _beginthreadex / _endthreadex. Книга написана в 2005 году, поэтому хочется узнать насколько эта информация актуальна. Тот же вопрос хочется прояснить касательно библиотеки С++. Буду рад подсказкам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 11:06 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
В целом актуально и будет актуально, т.к. потокобезопасные алгоритмы заметно медленнее небезопасных аналогов. В С++11 добавили набор классов для организации многопоточной работы. Вместо _beginthreadex можно использовать <thread> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 11:28 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
Если функция нереентерабельна - см.описание, то ее в многопоточке применять нельзя. Таких мало. Собственно, однопоточная библиотека у MS уже давно не существует - как и ключи компилятора /ML /MLd. Похоже, что последняя версия, их поддерживавшая, была VS 6.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 11:39 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
AlekseySQLВ книге Д.Харта "Системное программирование в среде Windows" написано, что библиотека С не расчитана на многопоточную работу: .... Книга написана в 2005 году, поэтому хочется узнать насколько эта информация актуальна. Эта информация либо устаревшая, и я не верю, что книга написана в 2005ом, а не в 1994 ом, либо ты не так продаешь информацию, немного неверно пересказываешь. библиотека С РАСЧИТАНА на многопоточную работу, хотя изначально это было не всегда так, и её сильно переписывали. но не каждую функцию можно использовать из разных потоков. Можно или нет - написано в документации, надо каждый раз смотреть. теперь подробно [В книге Д.Харта "Системное программирование в среде Windows" написано, что библиотека С не расчитана на многопоточную работу: во-первых, Если это действительно о системном программировании, то автор может рекомендовать вообще не использовать CRT, большинство современных программ именно так и делают. промежуточные переменные библиотечных функций создаются в общей памяти процесса и поэтому могут изменять значения друг друга. это не так, в современном мире переменные в CRT либо стековые, либо в thread local storage, либо выделяются динамически. в старых версиях CRT так было, но это было примерно 20 лет назад. Дескать, Microsoft создала многопоточную библиотеку LIBCHT.LIB и надо работать именно с ней, возможно, автор ведет речь о разных версиях CRT, их много, в виде .dll и статической библиотеки, с поддержкой многопоточности и без нее, почти во всех сочетаниях. современные программы в 90% используют динамический рантайм, а он всегда с поддержкой многопоточности. ну и да, ты должен понимать, какой версией CRT ты можешь пользоваться в своей программе, а какой - нет. а потоки создавать / удалять методами _beginthreadex / _endthreadex. да, так надо делать, это позволяет сделать инициализацию переменных CRT, специфичных для создаваемого потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.01.2017, 11:48 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
SiemarglЕсли функция нереентерабельна - см.описание, то ее в многопоточке применять нельзя. А где в описании это написано? Вот например функция wcscpy_s: https://msdn.microsoft.com/ru-ru/library/td1esda9.aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:06 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
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, большинство современных программ именно так и делают. А почему такой накат на язык С? Какие у него недостатки и что лучше использовать взамен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:29 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
AlekseySQL"Все версии библиотек CRT поддерживают разработку многопоточного кода". Так что книжка неактуальная получается От того что CRT сделали многопоточной сам язык Си никак не изменился, а книжка про него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 11:58 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
Книга "Системное программирование в среде Windows" морально устарела даже не потому что С изменился (он особо не менялся), а потому что на момент ее написания последним виндовсом был XP. С тех пор в WinAPI много чего добавилось, в т.ч. связанное с многопоточностью. Книгу не читал, но как понимаю она вовсе не про С, а про WinAPI. Код на С написан потому что из него проще всего с WinAPI работать. Ты бы определился что ты хочешь изучать: С или использование WinAPI. Это разные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 12:07 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
Dima TОт того что CRT сделали многопоточной сам язык Си никак не изменился, а книжка про него. Можно объяснить как между собой связаны библиотека CRT и библиотека языка С? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 12:34 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
AlekseySQLМожно объяснить как между собой связаны библиотека CRT и библиотека языка С? Наверное, тем, что CRT -- C RunTime library. То есть, это и есть библиотека языка C. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 12:37 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
AlekseySQLDima TОт того что CRT сделали многопоточной сам язык Си никак не изменился, а книжка про него. Можно объяснить как между собой связаны библиотека CRT и библиотека языка С? CRT это и есть библиотека С Например один и тот же код С Код: plaintext 1. при использовании однопоточной CRT может отработать некорректно, а многопоточная гарантирует что проблем не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 12:48 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
MasterZivбиблиотека С РАСЧИТАНА на многопоточную работу, хотя изначально это было не всегда так, и её сильно переписывали. strtok -тоже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 15:16 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
ИзопропилMasterZivбиблиотека С РАСЧИТАНА на многопоточную работу, хотя изначально это было не всегда так, и её сильно переписывали. strtok -тоже? https://msdn.microsoft.com/ru-ru/library/2c8d19sb.aspx Каждая функция использует локальную для потока статическую переменную для разбора строки на токены. Следовательно, несколько потоков могут одновременно вызывать эти функции без нежелательных эффектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.01.2017, 15:20 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
ИзопропилMasterZivбиблиотека С РАСЧИТАНА на многопоточную работу, хотя изначально это было не всегда так, и её сильно переписывали. strtok -тоже? да, а в чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2017, 09:02 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
MasterZiv, можно попросить вас ответить на вопросы? Они для меня очень важные. MasterZivно не каждую функцию можно использовать из разных потоков. Можно или нет - написано в документации, надо каждый раз смотреть. Не нашел в описании функций подобной информации. Можно пример? MasterZivво-первых, Если это действительно о системном программировании, то автор может рекомендовать вообще не использовать CRT, большинство современных программ именно так и делают. А почему такой накат на язык С? Какие у него недостатки и что лучше использовать взамен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2017, 10:59 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
[quot AlekseySQL А почему такой накат на язык С? Какие у него недостатки и что лучше использовать взамен?[/quot] Где я такое писал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2017, 04:11 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
[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 ..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2017, 04:25 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2017, 10:46 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
MasterZivИзопропилпропущено... strtok -тоже? да, а в чем проблема? проблема в том, что таки нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2017, 17:58 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
ИзопропилMasterZivпропущено... да, а в чем проблема? проблема в том, что таки нет таки нет что? говори уж прямо, без этих вот намеков... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2017, 20:00 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
Про МС уже дал ссылку выше, они все глобальные переменные рантайма у разных потоков в разные места разнесли, в TLS или еще куда, вот и получился многопоточный рантайм. Насчет других компиляторов не в курсе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2017, 20:26 |
|
||
|
Многопоточность и библиотеки С / С++
|
|||
|---|---|---|---|
|
#18+
Dima TПро МС уже дал ссылку выше, они все глобальные переменные рантайма у разных потоков в разные места разнесли, в TLS или еще куда, вот и получился многопоточный рантайм. Насчет других компиляторов не в курсе. во всех компиляторах примерно одно и то же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2017, 23:50 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39388323&tid=2018311]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 277ms |

| 0 / 0 |
