Форум программистов, компьютерный форум, киберфорум
Наши страницы

Storage durations - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Множественное наследование http://www.cyberforum.ru/cpp-beginners/thread1787242.html
Доброго времени суток. Есть ряд операций. Логически операции делятся на группы ( к примеру, запрос, ответ, чтение из буфера и .п.). В зависимости от группы, появляется специализация ( у всех...
C++ Полицейские-рекруты Недавно в вашем городе открылось отделение полиции. Сейчас идет набор кадров для работы в новом отделении. А тем временем, преступления все совершаются в городе. Достоверно известно, что один... http://www.cyberforum.ru/cpp-beginners/thread1787237.html
Найти число, не входящее в заданную последовательность натуральных чисел C++
Прошу помочь решить. Задано число N и последовательность из N-1 натуральных чисел. Все числа лежат в диапазоне и не повторяются. Это означает, что существует единственное число из , которого нет...
C++ Вывести результат последовательного применения циклического сдвига вправо заданной последовательности k раз
Циклическим сдвигом вправо последовательности называется последовательность, получаемая из исходной перемещением последнего элемента в начало. Заданы числа N и k и последовательность целых чисел...
C++ Распечатать все индексы вхождения числа х в последовательность а, начиная с последнего http://www.cyberforum.ru/cpp-beginners/thread1787231.html
Задана длина N последовательности целых чисел a и сама последовательность. После этого задается некоторое число х. Распечатать все индексы вхождения числа х в последовательность а, начиная с...
C++ Выяснить является ли заданная последовательность строго возрастающей, строго убывающей, или ни тем и ни другим На вход программы дается целое положительное число N большее единицы (N>1) и последовательность из N целых чисел. Написать Ascending, если последовательность строго возрастающяя, Descending, если... подробнее

Показать сообщение отдельно
hoggy
6691 / 2873 / 493
Регистрация: 15.11.2014
Сообщений: 6,465
Завершенные тесты: 1
29.07.2016, 16:57
Цитата Сообщение от Operok Посмотреть сообщение
При чём тут это?
при том, что он иллюстрирует стратегию зачистки тлс.

Цитата Сообщение от Operok Посмотреть сообщение
Делать под библиотеку тред пул, и запрещать использовать любые другие потоки, если они как-то взаимодействуют с "моими" объектами?
да как хотите, так и делайте.
чего вам ещё не понятно?

Цитата Сообщение от Operok Посмотреть сообщение
с недавнего времени завязал с этим, только unique_ptr/shared_ptr
если вы при этом жалуетесь, что отсталая студия не тянет полноценное тлс,
стало быть - это ваши личные трудности.

Цитата Сообщение от Operok Посмотреть сообщение
как поток сам вызовет delete?
ещё раз внимательно см #26

если останутся какие то вопросы,
значит вам нужно подучить с++,
тему: new/delete

Добавлено через 11 минут
Цитата Сообщение от Operok Посмотреть сообщение
Интересно всё жеж почему так происходит
хз, что именно вы там творите.

однако ваше описание не соответствует действительности.

http://rextester.com/FXU60916

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#include <iostream>
#include <sstream>
#include <vector>
#include <thread>
#include <mutex>
 
namespace detail{
 
    #define dFOR__(char_) \
        typename std::enable_if< std::is_same<typename T::char_type, char_>::value,
 
    #define THIS_OBJECT__(obj_) \
        decltype(obj_)>::type& { return obj_; }
 
    template<class T> auto ostream__() -> dFOR__(char) 
        THIS_OBJECT__(std::cout);
 
    template<class T> auto ostream__() -> dFOR__(wchar_t) 
        THIS_OBJECT__(std::wcout);
 
    #undef THIS_OBJECT__
    #undef dFOR__
 
}//detail
 
template<class T> class AtomicStream
{
    typedef std::mutex 
        mutex_t;
 
    typedef std::basic_ostringstream<typename T::char_type>
        accumulator_t;
public:
    AtomicStream(T& s = detail::ostream__<T>() )
        : mMutex(), mStream(), mDst(s){}
 
   ~AtomicStream(){
        mMutex.lock();
        mDst << mStream.str();
        mMutex.unlock();
    }
 
    template<class U> accumulator_t& operator << (U&& v) { 
        return mStream << v, mStream;
    }
private:
    mutex_t       mMutex;
    accumulator_t mStream;
    T&            mDst;
};
 
typedef AtomicStream<std::ostream>
    AStream;
typedef AtomicStream<std::wostream>
    WAStream;
 
 
 
//------------------------------------------------------
 
 
#define dME \
    " -----------------------------> "   \
    "sample(" << std::this_thread::get_id() << ")"
 
struct sample {
    sample() { AStream() << dME " was build"     << std::endl; }
   ~sample() { AStream() << dME " was destroyed" << std::endl; }
};
 
#undef dME
 
thread_local sample gObj;
 
 
void atomic_print(const std::string& name, const size_t indx)
{
    AStream() << "thread(" << std::this_thread::get_id() << ") "<< name
        << " printing: " << indx 
        << std::endl;
}
 
void threadFunction(const std::string& name)
{
    for(size_t n=0;n<5; ++n)
        atomic_print(name, n);
    
    AStream() << "thread(" << std::this_thread::get_id() << ") "<< name
        << " was finished!"
        << std::endl;
}
 
 
 
int main()
{
    std::cout << "Hello, world!\n";
    
    const char* names[] = { "one", "two", "foo", "bar", "baz" };
    
    std::vector<std::thread> threads;
    for(size_t n=0; n< 5; ++n)
        threads.emplace_back(&threadFunction, names[n] );
 
    for(size_t n=0; n<5; ++n)
        threads[n].join();
    
    AStream() << "finished!"<<std::endl;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru