Ну дык, Левада — профессионалы в плане аналитики, а мы кто такие, какие-то непонятные чувачки, без имени. Естественно Леваде проплачено всё уже давно и их мнение будет использовано при принятии закона об ограничении доступа в интернет.
Всегда считал, что независимые эксперты — не зависят от здравой логики, не зависят от любых опросов или тестирований, не зависят от исследуемого вопроса или продукта, не зависят от адекватной оценке. Поэтому они и независимы. Зависят только от проплаченного бабла.
Думается, что тут замок не типа домофона, а именно электро-механический, с задвижкой, без электричества будет заблокирован, пока не зарядится. А если делать как в домофоне, то возить с собой тележку с аккумуляторами?! Ибо там электромагнит работает постоянно, а здесь только во время закрытия/открытия.
У вас проблема в том, что вы берете ссылки как есть, а они у вас дохнут еще до начала выполнения задачи, вот вам и SIGSEGV. Используя же std::decay вы убережете себя от этого. Так же и правильно отработают rvalue, значения которых 100% не доживёт до начала выполнения задачи.
В вашем случае что будет, если сигнатура функции будет содержать const std::string& и вы прокинете строку? Естественно SIGSEGV, ибо объект строки сдохнет после добавления в очередь, а вот на этапе выполнения ссылка уже будет мертва.
Так что изучать всё же стоит сразу нормально, а биться головой о стену, в надежде, что в нужный момент ваш код не упадёт.
Ошибки:
1. Вы принудительно заставили запускать async задачи в отдельных потоках. В вашей задаче нет смысла запускать потоков больше, чем кол-во процессоров в системе. Не стоит принудительно пихать
2. Следовало разобраться почему SIGSEG при захвате в лямбде, а не пихать tuple, код был бы заметно короче, для этого надо использовать std::decay.
3. Опять же нарушаете стилистику, чем вам std::future не угодил, а точнее std::promise, интерфейс был бы стандартный, да не изобретали бы велосипед с возвратом значения.
4. просто ужасный рабочий цикл, чрезмерно переусложнён.
По коду вывод один: Нужно знать не только объекты стандартной библиотеки, но и уметь ими правильно пользоваться. А вот с использованием у вас просто никак.
Правильнее было бы сделать отдельно очередь с 3мя методами: void push(task), bool pop(task&), void notify_exit(). notify_exit пробуждает все потоки в очереди и они возвращают false иначе pop висит до посинения, пока не придет задача. И не пришлось бы городить такой сложный огород.
А у меня HP Microserver Gen 7, стоит наверное раза в 2 дешевле, держит 5 дисков, правда в рейд можно сцепить 4, на него ставится xpenology. Проц у него получше будет, да и на него всё что угодно можно поставить.Synology ныне живет только за счет своей оси, железо в домашних NAS у них унылее некуда. И как у него скорость, мой полностью забивает 1Гб сетку, файлы копируюся стабильно на 100Мб/с спокойно. А вот 212j в лучшем случае выдавал 70Мб/с и чуть чем занят (картиночки индексирует, видео, всё, скорость в лучшем случаее 20Мб/с. Не, не буду больше NAS брать от Synology, оно того не стоит. Железо 5 летней давности, а то и того больше.
1. XNA умер и поддерживаться более не будет
2. Вы представляете объемы данных? Если вы хотите онлайн еще при этом больше чем игрока 2, то в настоящее время вам понадобится сразу тьма серверов. В итоге у вас будут либо микро астероиды вместо планет, либо непонятно что. Даже 1000x1000x1000 это 1Гб, в случае использовании 1го байта. Minecraft выигрывает за счет низких уровней. Или вы хотите миры Пратчета?
3. Учитывая сотни нынешних клонов, даже если ваш будет выделяться, то ему будет очень сложно выбиться.
Я так же думал в этом направлении, но немного иначе.
Угадайте что творится на хабре, угадайте что будет с тостером (на тостере так вообще вменяемых вопросов нет, есть только лентяи которым лень поискать в гугле или почитать книжки/статьи). Так чуть ли не везде, а не только на stackoverflow.
Очень интересна политика steam, последнее время прям завалили старыми играми, которые поддерживают только неподдерживаемые в настоящий момент ОСи (Win 95/98, редко XP, а многие так вообще под DosBox идут, который настроен настолько коряво, что надо самому шаманить). Поддерживают ныне уже неподдерживаемые разрешения и т.д… Или Гейб уже впал в маразм и ему важны только деньги? Большинство из старых игр даже не запускаются на современных компьютерах. Особенно когда многие ждут того, что игра будет запускаться, а она не запускается, тоже самое и с gog, только шаманство. Тогда как на трекерах можно найти готовые репаки (с различными патчами под широкий экран, под современные ОСи) и не мучить себя с попытками завести эти игры.
Обратитесь к психологу, манию величия надо подлечивать. Откладывать уже поздно.
Если честно, то делать выводы основываясь только на своём «Я» есть не хорошо. Я знаю как и интровертов, так и экстравертов, у нас в коллективе больше сангвиников, чем флегматиков. Ну и понеслась.
Превращать вариадики в списки типов, мсье знает толк. Но у меня всё же вопрос: Зачем?
С вариадиками можно работать в нативном виде, без преобразования к рудиментарному списку типов. Хранить их не сложно, сделать псевдоконтейнер и всё.
template<typename… Args>
struct holder;
Этого достаточно для того чтобы работать как угодно с вариадиками.
Небольшой пример ideone.com/tb6Jm7 возможно натолкнет на дальнейшее развитие знаний.
Ну уж не знаю, пробовал жать GPU, решениями от Intel и Nvidia, получается мыло. На FullHD с ходу конечно не заметно, но мелкие детали изрядно замыливаются. На HD заметно уже лучше, если на мониторе смотреть, еще куда ни шло, а вот на ТВ было жуткое мыло. От Intel правда качество было получше. Единственный вариант, это задирать битрейт очень высоко. Для стриминга еще терпимо, если не через WiFi глядеть в домах, где всё загажено множеством сетей. А для хранения уже нет смысла.
>> Например, более точно выдерживался битрейт
Ну битрейт может быть плавающим, в зависимости от динамичности сцены и к сожалению современные решения на GPU с этим никак не справляются, вот и выдерживают.
Платно и поддерживает только DX9 (и вроде как только редакцию c). Его бесплатный «аналог» Overwolf тоже поддерживает только DX9. Поставил на Asus T100TA, старые игры тупо не поддерживаются, даже те, что DX9, тот что без c. Так что платная поделка, которая работает совсем ограниченно не впечатляет.
Учитывая то, что особо никто послушать её не сможет, ценность упадет до 0 очень быстро, картину можно рассматривать без проблем, а вот слушать уже проблематично, опять же картины репродуктируют, а альбом как? Если о объекте искусства никто не знает, его ценность будет нулевая так или иначе.
Да и будет серьезным таким фейлом, если никто не захочет купить их альбом)))
А подобная политика разве не нарушает какие либо законы. Тут ведь действительно самое настоящее крепостное право, к кому пошел, дальше без вариантов, да и не попадает ли под законы о монополии, когда сотрудник лишается права выбора работать там, где ему хочется. Тут и оплату труда можно начинать резать, выбора ведь не будет. Отсутствие здоровой конкуренции на рынке труда.
Всегда считал, что независимые эксперты — не зависят от здравой логики, не зависят от любых опросов или тестирований, не зависят от исследуемого вопроса или продукта, не зависят от адекватной оценке. Поэтому они и независимы. Зависят только от проплаченного бабла.
В вашем случае что будет, если сигнатура функции будет содержать const std::string& и вы прокинете строку? Естественно SIGSEGV, ибо объект строки сдохнет после добавления в очередь, а вот на этапе выполнения ссылка уже будет мертва.
Так что изучать всё же стоит сразу нормально, а биться головой о стену, в надежде, что в нужный момент ваш код не упадёт.
1. Вы принудительно заставили запускать async задачи в отдельных потоках. В вашей задаче нет смысла запускать потоков больше, чем кол-во процессоров в системе. Не стоит принудительно пихать
2. Следовало разобраться почему SIGSEG при захвате в лямбде, а не пихать tuple, код был бы заметно короче, для этого надо использовать std::decay.
3. Опять же нарушаете стилистику, чем вам std::future не угодил, а точнее std::promise, интерфейс был бы стандартный, да не изобретали бы велосипед с возвратом значения.
4. просто ужасный рабочий цикл, чрезмерно переусложнён.
По коду вывод один: Нужно знать не только объекты стандартной библиотеки, но и уметь ими правильно пользоваться. А вот с использованием у вас просто никак.
Правильнее было бы сделать отдельно очередь с 3мя методами: void push(task), bool pop(task&), void notify_exit(). notify_exit пробуждает все потоки в очереди и они возвращают false иначе pop висит до посинения, пока не придет задача. И не пришлось бы городить такой сложный огород.
2. Вы представляете объемы данных? Если вы хотите онлайн еще при этом больше чем игрока 2, то в настоящее время вам понадобится сразу тьма серверов. В итоге у вас будут либо микро астероиды вместо планет, либо непонятно что. Даже 1000x1000x1000 это 1Гб, в случае использовании 1го байта. Minecraft выигрывает за счет низких уровней. Или вы хотите миры Пратчета?
3. Учитывая сотни нынешних клонов, даже если ваш будет выделяться, то ему будет очень сложно выбиться.
Я так же думал в этом направлении, но немного иначе.
Если честно, то делать выводы основываясь только на своём «Я» есть не хорошо. Я знаю как и интровертов, так и экстравертов, у нас в коллективе больше сангвиников, чем флегматиков. Ну и понеслась.
Больше похоже на описание некоего стереотипа.
С вариадиками можно работать в нативном виде, без преобразования к рудиментарному списку типов. Хранить их не сложно, сделать псевдоконтейнер и всё.
template<typename… Args>
struct holder;
Этого достаточно для того чтобы работать как угодно с вариадиками.
Небольшой пример ideone.com/tb6Jm7 возможно натолкнет на дальнейшее развитие знаний.
>> Например, более точно выдерживался битрейт
Ну битрейт может быть плавающим, в зависимости от динамичности сцены и к сожалению современные решения на GPU с этим никак не справляются, вот и выдерживают.
Да и будет серьезным таким фейлом, если никто не захочет купить их альбом)))