Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
08.01.2018, 12:09
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
Есть функция, которая возвращает непрерывность параметра. Т.е. ей передали 1, она вернула false (первое значение очевидно не непрерывно) ей передали 2, она вернула true ей передали 3, она вернула true ей передали 5, она вернула false ей передали 6, она вернула true ... Хочется внутри этой функции сохранять предыдущее значение с помощью static- переменной. Но в инете не нашел ничего толкового по поведению static- переменных в многопоточной программе. Что скажет стая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 12:20
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
нашел новые возможности С++: Код: plaintext 1. Если я потоки создал с помощью Qt, то по логике тоже должно взлететь. Кто- нибудь пробовал такие возможности? Какие подводные камни (производительность не падает)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 12:25
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
[quot AlekseySQL]нашел новые возможности С++: Код: plaintext 1. Делать функции с static-параметром - это не круто. Вобщем.. лучше это как-то переоформить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 12:36
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
maytonДелать функции с static-параметром - это не круто. Вобщем.. лучше это как-то переоформить. Зато код не запутан: не надо выше на два уровня по стеку хранить значение предыдущего значения и дважды вглубь его по ссылке передвать... Мало кто поймет это извращение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 13:47
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
Почему- то при присваивании значения подобной переменной программа вылетает с ошибкой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 13:52
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQLпрограмма вылетает с ошибкой И эта ошибка "красненькая" или "многа нипанятных букафф"? inline для начала убери. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 13:53
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQL, Так прямо и пишет: "ОШИБКА!!!" ? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 15:15
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
Anatoly MoskovskyAlekseySQL, Так прямо и пишет: "ОШИБКА!!!" ? ))) Ошибка выглядит так: "Приложение получило сигнал от операционной системы и будет закрыто". По поведению очень похоже на ошибку работы с памятью, причем когда я работаю без stаstic- переменной (с помощью передачи в функцию ссылки на предыдущее значение), то никаких ошибок не происодит и программа удачно завершается. Так что ошибка не в остальном коде программы, а именно в работе со static- переменной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 16:01
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQLПочему- то при присваивании значения подобной переменной программа вылетает с ошибкой: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Такой переменной должно быть присвоено значение при объявлении, кажется: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 16:17
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQLОшибка выглядит так: "Приложение получило сигнал от операционной системы и будет закрыто". Там ещё кнопочка подробностей обычно прилагается к такому сообщению. И возможность запустить отладчик. Очень полезная. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 18:06
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQLПо поведению очень похоже на ошибку работы с памятью, причем когда я работаю без stаstic- переменной (с помощью передачи в функцию ссылки на предыдущее значение), то никаких ошибок не происодит и программа удачно завершается. «Что-то ты, Герасим, недоговариваешь...» © Муму ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 18:40
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
Тут по смыслу - не функция а объект с состоянием. Если так сделать то и в потоки его вставлять удобно и конфликтов не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 19:52
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
Если надо, чтобы в каждом потоке был отдельный счетчик: Код: plaintext 1. Если надо чтобы во всех потоках был один и тот же счетчик: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 20:10
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
Вася УткинЕсли надо, чтобы в каждом потоке был отдельный счетчик: Код: plaintext 1. Если надо чтобы во всех потоках был один и тот же счетчик: Код: plaintext 1. Спасибо, завтра проверю! Я правильно понимаю, что типы данных с постфиксом _t были введены в С++ 11 чтобы снять вопрос платформо- зависимости размера в памяти? Другими словами, если предполагается использовать программу на разных платформах, то лучше использовать эти типы, а не стандартные int, long, long long? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 20:34
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
Вроде так должно быть, без static Код: plaintext 1. У меня работает везде, кроме DLL под XP, там есть проблема с TLS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.01.2018, 21:04
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
На всякий случай: thread_local это не одна переменная, а по одной на каждый поток, т.е. переменных столько, сколько потоков. Может все-таки речь про обычный static ? Про то и другое уже написали 21088084 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2018, 00:01
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQLВася УткинЕсли надо, чтобы в каждом потоке был отдельный счетчик: Код: plaintext 1. Если надо чтобы во всех потоках был один и тот же счетчик: Код: plaintext 1. Спасибо, завтра проверю! Я правильно понимаю, что типы данных с постфиксом _t были введены в С++ 11 чтобы снять вопрос платформо- зависимости размера в памяти? Другими словами, если предполагается использовать программу на разных платформах, то лучше использовать эти типы, а не стандартные int, long, long long? Да, uint64_t, ... - ввели для четкого понимания его размера, для бинарной совместимости и надежности кода. Когда используют short, int, long, long long ... - то оттестировав на одной архитектуре, потом ловят баги переполнения на другой. Когда я точно знаю, что там значения будут очень мелкими, то использую int. ullong - такого типа нет, это надо пользовательский определять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2018, 00:19
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQLЕсть функция, которая возвращает непрерывность параметра. Т.е. ей передали 1, она вернула false (первое значение очевидно не непрерывно) ей передали 2, она вернула true ей передали 3, она вернула true ей передали 5, она вернула false ей передали 6, она вернула true ... Хочется внутри этой функции сохранять предыдущее значение с помощью static- переменной. Но в инете не нашел ничего толкового по поведению static- переменных в многопоточной программе. Что скажет стая? static переменная одна, потоков много... работать не может в принципе. такой дизайн функции задуман как нереэнтерантный. это плохо для работы функции в таком виде нужно применять сохранение состояния в переменных, хранимых в thread local storage. при этом не обязательно , чтобы это была статическая переменная функции. ещё лучше было бы изменить дизайн функции таким образом, чтобы хранил состояние и передавал его ви функцию клиент этой функции. тогда не нужно было бы хранить ничего в thread local storage (применение которого безусловно является ужасно плохим архитектурным решением) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2018, 00:20
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQLmaytonДелать функции с static-параметром - это не круто. Вобщем.. лучше это как-то переоформить. Зато код не запутан: не надо выше на два уровня по стеку хранить значение предыдущего значения и дважды вглубь его по ссылке передвать... Мало кто поймет это извращение. сделай это классом, и никто даже слова не скажет... просто даже никто не поймет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2018, 12:38
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
Вася УткинДа, uint64_t, ... - ввели для четкого понимания его размера, для бинарной совместимости и надежности кода. Когда используют short, int, long, long long ... - то оттестировав на одной архитектуре, потом ловят баги переполнения на другой. Когда я точно знаю, что там значения будут очень мелкими, то использую int. Ок, а в таком случае можно гарантировать минимальное / максимальное значение хранимое в этих типах? Или это получается как принцип Гейзенберга: либо гарантируем размер на диске (*_t типы), либо гарантируем размер хранимого значения (обычные типы из С), а одновременно дать обе гарантии нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2018, 12:45
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
Для целых чисел размер на диске определяет мин/макс значение: Беззнаковые 0 ... 2^N Знаковые -2^N-1 ... 2^N-1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2018, 12:57
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQLлибо гарантируем размер на диске (*_t типы), либо гарантируем размер хранимого значения (обычные типы из С), а одновременно дать обе гарантии нельзя? Проблема в том что обычные типы гарантируют минимально-возможное значение https://ru.wikipedia.org/wiki/Типы_данных_в_C Реальный размер целочисленных типов зависит от реализации. Стандарт лишь оговаривает отношения в размерах между типами и минимальные рамки для каждого типа: Так long long не должен быть меньше long, который в свою очередь не должен быть меньше int, который в свою очередь не должен быть меньше short. Так как char — наименьший из возможных адресуемых типов, другие типы не могут иметь размер меньше него. Минимальный размер для char — 8 бит, для short и int — 16 бит, для long — 32 бита, для long long — 64 бита. Желательно, чтобы тип int был таким целочисленным типом, с которым наиболее эффективно работает процессор. Это позволяет достигать высокой гибкости, например, все типы могут занимать 64 бита. Однако, есть популярные схемы, описывающие размеры целочисленных типов.[7] На практике это означает, что char занимает 8 бит, а short 16 бит (также, как и их беззнаковые аналоги). int на большинстве современных платформ занимает 32 бита, а long long 64 бита. Длина long варьируется: для Windows это 32 бита, для UNIX-подобных систем — 64 бита. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.01.2018, 23:49
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQLХочется внутри этой функции сохранять предыдущее значение с помощью static- переменной. Не люблю статические переменные. Проще первым параметром передавать функции указатель на на некий хендл. Если значение хендла NULL, то это первый вызов и функция сама выделит память и поместит указатель на нее в хендл. При последующих вызовах функция будет использовать эту выделенную память по своему усмотрению. Можно так же передавать сразу хендл, а не указатель на него. Но тогда понадобится еще функция инициализации этого хендла. Ну как аналог open() перед read(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
10.01.2018, 00:26
|
|||
|---|---|---|---|
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
AlekseySQLВася УткинДа, uint64_t, ... - ввели для четкого понимания его размера, для бинарной совместимости и надежности кода. Когда используют short, int, long, long long ... - то оттестировав на одной архитектуре, потом ловят баги переполнения на другой. Когда я точно знаю, что там значения будут очень мелкими, то использую int. Ок, а в таком случае можно гарантировать минимальное / максимальное значение хранимое в этих типах? Или это получается как принцип Гейзенберга: либо гарантируем размер на диске (*_t типы), либо гарантируем размер хранимого значения (обычные типы из С), а одновременно дать обе гарантии нельзя? В тему пользы сериализации. Помимо разрядности есть еще и порядок байт в машинном слове. Little/Big endian называется. И об этом аспекте голова болит когда нужно обеспечить миграцию бинарника (данных) с одного железа на доругое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
13.01.2018, 12:40
|
|||
|---|---|---|---|
|
|||
Как ведет себя static переменная функции в многопоточной программе? |
|||
|
#18+
Вася УткинЕсли надо, чтобы в каждом потоке был отдельный счетчик: Код: plaintext 1. Если надо чтобы во всех потоках был один и тот же счетчик: Код: plaintext 1. Спасибо, взлетело! p.s. На работе был пожар, потому долго не мог проверить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&mobile=1&tid=2018000]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
463ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 570ms |

| 0 / 0 |
