All streams
Search
Write a publication
Pull to refresh
7
0
Евгений @ixSci

User

Send message
У себя в блоге пишу, потихоньку., касательно C++ модели.
К сожалению я нигде не собирал то множество материала, которое читал по этой теме. Более того там не было ни одного на русском. Я просто гуглил по memory ordering или memory barriers и поглощал информацию. У меня на это ушло довольно много времени и я не могу сказать, что я всё понял. Есть несколько моментов, которые мне еще нужно прояснить.
Модель памяти по этой книге Вы вряд ли поймёте. Нужны другие, базовые, знания.
Хорошая подборка, спасибо. Но Вам действительно понравилась Zero Day? Кроме того, что книга настолько переполнена глупыми клише и чисто американскими страхами она еще и сильно не профессиональна. Чего только стоят имена: Ivana, Sasha и еще там было что-то, я уже не помню что. Лично я считаю, что Руссиновичу стоит писать технические книги, но в художественную литературу ему лезть нечего. Я бы поставил этой книге слабую 3, только за прошлые заслуги автора.
Т.е. лично у меня, после прочтения статьи сложилась следующая картина: в Windows8 сменилось API и от старого способа работы с тредами пора отказываться. И вот тут-то интел и решил всем помочь и «запилил» TBB под Windows 8. Более того, непонятно как до этого мы жили. Но, Вы скромно умалчиваете, что есть стандарт де-факто для написания WinRT приложений на C++ — PPL(которому уже ~2 года). Я понимаю, что блог компании и всё такое. Но это всё же хабр, а не сайт интела.
Есть. Что это меняет? Вы попробуйте ответить на мои вопросы, которые я задал ранее. Попробую его переформулировать: Зачем с такой помпой рассказывать о TBB в Windows 8, когда все её преимущество заканчиваются на кроссплатформенности?

P.S. Эмоций при написании комментариев к данной статье не испытываю.
Вы пишите статью в контексте WinRT и XAML. Весь код, который относится к вышеозначенным, в кроссплатформенном приложении будет вынесен в отдельный модуль(скорее всего). Если только выносить весь код с потоками за пределы этого модуля. Но тогда непонятна вся помпа «мы выпустили библиотеку для Windows 8». Конкретно в windows 8 Ваша библиотека имеет спорные плюсы, мягко говоря.

Про GPL: мало кто хочет делать код публичным, GPL паразитивен. А значит остается покупать, что тоже не добавляет плюсов в копилку TBB.
WinRT не подразумевает кроссплатформенности. Все взаимодействие с API, всё равно, будет вынесено в отдельный модуль. Так что нет, кроссплатофрменность тут роли не играет.
А судя по тому, что выше Вы написали про GPL, то за неё еще и платить придется. Точно не конкурент PPL.
Жаль, что MS не приучила Вас читать и, самое главное, понимать текст.
К чему весь этот геморрой с интелом, когда в windows есть PPL, который полностью интегрируется с WinRT async model?
Всякое бывает. Не буду выгораживать наших, но и с буржуями не всё так гладко.
Когда-то работал на одну достаточно крупную оутсорсинговую компанию, так вот я мог плевать в потолок большую часть времени, пока буржуи там утверждают каждую бумажку недели по 2. Причем даже очень маленькую бумажку.
Работая на буржуев сейчас, уже напрямую, я не видел подробного ТЗ ни разу. Скорее обрисовка в общих чертах, разговор по скайпу и все. В ходе работы можно подкорректировать и задать вопросы по тому же скайпу.
ОЧень часто приходится проявлять инициативу, додумывать, допиливать дорисовывать :)
Единственно, что мне нравится при работе с буржуем — так это наличие дизайнера. Хотя в текущем проекте дизайнер был брошен, после разработки основной части ГУИ. И теперь ГУИ допиливают программисты с маркетинговым отделом. Хотя фирма достаточно крупная.
А что там может быть? Move семантика она выше уровнем чем ассемблер.
Применение всегда найдется, а знать как всё работет очень полезно.
К примеру std::move из студии:
template<class _Ty> inline
	typename remove_reference<_Ty>::type&&
		move(_Ty&& _Arg) _NOEXCEPT
	{	// forward _Arg as movable
	return ((typename remove_reference<_Ty>::type&&)_Arg);
	}

в остальных компиляторах он будет такой же.
Можете написать. Внутри static A a; И возвращать rvlaue ссылку на него. Понятия не имею зачем, но это можно сделать. Тут те же правила, что и с lvalue ref. Только lvalue никто не «украдёт», когда его вернёшь.
Это объект созданный в стеке функции. На lvalue, которое может быть уничтожено(так работает move). Нельзя просто так возвращать ссылку. Тут объект уже перестанет существовать, когда функция завершится.
Это UB, так как тут «повисшая» ссылка. Нельзя возвращать ссылку на локальный объект…
2003 был как дополнение(исправление ошибок). Формально стандарта 2 — 98 и 11. Следующий будет в 17-м, минорный в 14-м.
То, что я написал — будет. То, что Вы написали в студии выводить 2 раза A, на f true и false. И я не могу сказать, что это не баг студии.
Разница лишь в том, что один объект ссылка, а второй нет. Со всеми вытекающими.
#include <iostream>

class A{
public:
    virtual void foo()
    {
        std::cout << "A\n";
    }
};

class B: public A
{
public:
    void foo() override
    {
        std::cout << "B\n";
    }
};

int main()
{
    A a = B();//bad slicing
    A&& b = B();
    a.foo();
    b.foo();
};

Information

Rating
Does not participate
Location
Нижний Новгород, Нижегородская обл., Россия
Date of birth
Registered
Activity