Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Разные потоки пишут в std::cout


Автор: andrew_121 28.5.2009, 08:00
Т.е. Если бы вызывалась функция которая пишет в поток, это понятно. А в этом случае как быть?

П.С.
Создать функцию не предлагать. Ибо это не благодарный труд!

Автор: zim22 28.5.2009, 08:18
http://articles.techrepublic.com.com/5100-10878_11-5072104.html

Автор: andrew_121 28.5.2009, 08:31
zim22, Спасибо, почитаю.

Автор: azesmcar 28.5.2009, 09:30
Цитата(andrew_121 @  28.5.2009,  08:00 Найти цитируемый пост)
Создать функцию не предлагать


Код

namespace stdext
{
    template <typename T>
    class thread_safe_
    {
        template<typename U> friend std::ostream& operator << (std::ostream&, const thread_safe_<U>&);
        template<typename U> friend thread_safe_<T> thread_safe(const T& v);
        thread_safe_(const T& v): value_(v) {}
        const T& value_;
    };

    template <typename T>
    thread_safe_<T> thread_safe(const T& v) {
        return thread_safe_<T>(v);
    }

    template <typename T>
    std::ostream& operator << (std::ostream& out, const thread_safe_<T>& v)
    {
        //тут синхронизируем
        //EnterCriticalSection... - 
        out << v.value_ << std::flush;
        //LeaveCriticalSection...
        return out;
    }
}

int main()
{
    std::cout << stdext::thread_safe(5);
    return 0;
}

так пойдет?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)