|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|||||||||||
Странность определения размера памяти структуры29.12.2014, 15:37. Показов 2656. Ответов 39
Метки нет (Все метки)
Здравствуйте. Никогда с таким не сталкивался, а сейчас просто крышу снесло пока нашёл ошибку там, где не ожидал...
А вот так
Кто может объяснить какого...выравнивание памяти что-ли? MSVS2008.
0
|
|||||||||||
| 29.12.2014, 15:37 | |
|
Ответы с готовыми решениями:
39
Ф-ция определения размера файла Написать функцию определения размера стека Функция определения размера проекции файла |
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 29.12.2014, 18:58 | |||
|
0
|
|||
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
||||||||
| 29.12.2014, 19:02 [ТС] | ||||||||
Добавлено через 1 минуту Добавлено через 1 минуту Есть много причин того, что я выбрал именно такую структуру, просто описывать идею - довольно долго будет.
0
|
||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 29.12.2014, 19:31 | |||
![]() Вот хороший и простой пример использования этого подхода для расчета crc файла любой длины ![]() Добавлено через 21 минуту А вообще я изначально немного с другим уклоном писал. Вот ты писал в первом сообщении, что тебе надо, чтобы структура занимала 32 байта. Вот вместо непереносимых плясок с упаковкой и т.п. я предложил взять массив на 32 байта и читать данные туда. А потом уже их интерпретировать как тебе надо, хочешь как несколько int32, хочешь как несколько int64 и парочку int32. Собственно тема chunk`ов - это просто развитие дальнейшее, но уже выходящее за рамки первоначального вопроса.
0
|
|||
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
||
| 29.12.2014, 20:00 [ТС] | ||
|
Добавлено через 1 минуту Я только сейчас задумался, что не удастся особо сэкономить на оперативной, выделяя ровно столько, сколько нужно, даже с учётом того, что работает 1024 потока. Да и выделение памяти - дополнительные вычисления процессора, так что хрен с ней, с памятью)
0
|
||
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 29.12.2014, 20:01 | |
|
1024 потока? Не перебор?
0
|
|
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
||
| 29.12.2014, 20:07 [ТС] | ||
|
0
|
||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 29.12.2014, 20:16 | ||
|
Почитай для начала про пулы потоков. А еще лучше что-нибудь фундаментальное про сети, потоки. Недавно куча книг переиздавалась. Тот же Танненбаум, Стивенс, из новых у Энтони Вильямса довольно неплохая книга по многопоточности в С++.
0
|
||
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|||
| 29.12.2014, 20:31 [ТС] | |||
|
Добавлено через 3 минуты Или не могли бы Вы описать как в реальных серверах делают именно эту ветку проекта - множественный доступ к сети?
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 29.12.2014, 21:10 | |||
|
В качестве реального примера могу посоветовать поизучать исходники популярных веб-серверов с открытым кодом.
1
|
|||
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
||
| 29.12.2014, 21:43 [ТС] | ||
|
Добавлено через 2 минуты С пулом та же фигня. Почему не считать что-то пока ждём файловые тормоза? Добавлено через 1 минуту Или тогда сделать 3 потока: 1 слушает соккет, 2 считает математику, 3 читает-пишет файл... Добавлено через 3 минуты Как считаете? ЗЫ: времени нет разбирать чужой код. Позже обязательно.
0
|
||
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 29.12.2014, 21:48 | ||
|
1
|
||
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|||
| 29.12.2014, 22:57 [ТС] | |||
|
Добавлено через 2 минуты Добавлено через 58 минут На счёт 512 байт тупанул...всем спасибо за ответы! Буду курочить.
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||||
| 29.12.2014, 23:30 | |||||
В любом случае, ты меня как-то совсем по-своему проинтерпретировал Перечитай еще раз что-ли.Я не писал, что надо пихать все в один поток (хотя такой сценарий вполне возможен и используется в своем круге задач). Я писал, что нагрузку между потоками надо распределить так, чтобы они как можно меньше друг другу мешали. Если потоков очень много, а процессоров мало, то они мешать друг другу будут по определению. Добавлено через 1 минуту
0
|
|||||
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
||||||||
| 29.12.2014, 23:54 [ТС] | ||||||||
|
Вот упрощённая часть кода функции потоков:
Добавлено через 3 минуты На моём довольно хиленьком ноуте, как для сегодняшних мерок Пара тысяч соединений(с 8-ми таких же ноутов) одновременно работает, проц на 7% максимум. Я поэтому не думал, что блокировка - это такая бяка. Добавлено через 2 минуты Добавлено через 5 минут Где-то читал, что критическая секция - довольно быстрая штука и что лучше не экономить на ней, всё равно много сэкономить не удастся. Могу попробовать найти источник цитаты.
0
|
||||||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|||
| 30.12.2014, 00:04 | |||
|
Но я бы не стал так делать. Я бы предоставил слежку за соединениями основному потоку, в нем же держал список клиентов (зачем его синхронизировать вообще?). Мониторить события чтения, записи, коннекта\дисконнекта и т.п. можно через функции типа select, poll, epoll или аналоги. Они усыпляют главный поток до момента наступления какого-либо события на одном из прослушиваемых сокетов. Как только пришла задача или новое соединение, ожидание прекращается, выполняется работа по регистрации клиента, либо постановка задачи в очередь для одного или нескольких рабочих потоков (которые как раз можно объединить в пул). Вот добавление в очередь как раз и должно синхронизироваться. Кроме очереди больше ничего синхронизировать не надо. Ну а дальше твои потоки делают что нужно, пишут файлы, считают математику и т.п. По завершении своей работы они засыпают и ждут новых заданий. Добавлено через 5 минут Я говорю в общем про архитектуру приложения, про распределения ответственностей. Инструменты выбирать конечно важно подходящие, но дело сейчас не в них, а в принципе, подходе к задаче. Если, например, три потока постоянно синхронизируют (не важно с помощью чего) одну переменную по кругу, то это вносит в их работу ту синхронность, которую как раз нужно бы преодолеть. Отсюда и польза от многопоточности падает, начинаются тормоза и т.п.
1
|
|||
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
||||
| 30.12.2014, 00:48 [ТС] | ||||
|
ИМХО, поточная очередь несколько "прозрачнее" пулов с основным и вспомогательным-ми потоком-ми. Здесь не нужно учитывать ничего лишнего. Поток, который раньше закончил вычисление и ответил клиенту - раньше обратился за новыми данными. Если вдруг сервер не будет успевать считать ответы, то он просто не будет слушать никого, пока хоть один поток не завершится. Потоки мне показались более понятными и прозрачными. Пул: основной поток принял данные, проверил, грубо говоря, есть ли место в пуле, если есть - добавил. Обработчик должен проверить не пуст ли пул. Если пуст, то ждать, если не пуст, то взять данные и "оповестить" пул о том, что эти данные пошли по-рукам. Потоки: Фактически та же реакция, только более естественная что-ли, без проверок дополнительных. Есть возможность - считаем, нет возможности - игнорим. При желании, конечно, можно вставить дефалтный поток, который при занятости всех остальных будет отправлять некий стандартный ответ о том, что занято, например html рефрешер с задержкой в секунду...много идей, мало времени)
0
|
||||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
||
| 30.12.2014, 00:58 | ||
Почитай про них, все-таки, хотя бы тут (да, epoll - это только linux, но здесь больше важен принцип, в windows есть аналогичные инструменты).
0
|
||
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|||
| 30.12.2014, 01:35 [ТС] | |||
|
Для кип-элайф согласен, значительно красивше) Сапсибо, буду пробовать. Могу погуглить, но всё же можно подробнее
0
|
|||
|
19506 / 10109 / 2464
Регистрация: 30.01.2014
Сообщений: 17,834
|
|
| 30.12.2014, 09:32 | |
|
0
|
|
|
45 / 48 / 5
Регистрация: 24.06.2013
Сообщений: 677
|
|
| 30.12.2014, 20:27 [ТС] | |
|
Спасибо, буду учить)
0
|
|
| 30.12.2014, 20:27 | |
|
Ошибка определения размера для swf (getimagesize) Задача определения размера файла (пример решения) Различные определения структуры (struct) Директива компилятора для определения размера элемента массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version
1. 2003 - 06 - Designing Virtual Worlds (1st Edition)
Автор: Richard A. Bartle | Объем: 768 стр.
Ссылки: Amazon
. . .
|
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
|
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы.
Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
|
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version
Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
|
|
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров".
Задача:
Запрет инициалов.
Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
|
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . .
Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
|
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг.
Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует.
В процессе разработки. . .
|
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
|