看muduo庫遇到的乙個問題?

時間 2021-06-16 09:15:25

1樓:陳碩

1. static __thread Deleter 編譯就不過。

2. muduo/base/tests/http://ThreadLocalSingleton_test.cc驗證了目前的實現是正確的,用 valgrind 檢查沒有記憶體洩漏。

3. 是只有乙個 deleter,有什麼問題?

2樓:老鼠的海邊

類不長,我就全貼了。。。deleter析構時呼叫destructor,那麼應該是每個ThreadLocalSingleton物件都有自己的deleter_才對啊,使用static後,所有ThreadLocalSingleton物件共用乙個deleter_,這不科學。。。

namespace muduo

template

class ThreadLocalSingleton : boost::noncopyable//

public:

static T& instance()//返回物件

if (!t_value_)

t_value_ = new T();

deleter_.set(t_value_);

return *t_value_;

static T* pointer()//返回指標

return t_value_;

private:

ThreadLocalSingleton();

~ThreadLocalSingleton();

static void destructor(void* obj)//

assert(obj == t_value_);

typedef char T_must_be_complete_type[sizeof(T) == 0 ? -1 : 1];//T是有效的型別

T_must_be_complete_type dummy; (void) dummy;

delete t_value_;

t_value_ = 0;

class Deleter

public:

Deleter()

pthread_key_create(&pkey_, &ThreadLocalSingleton::destructor);

~Deleter()

pthread_key_delete(pkey_);

void set(T* newObj)

assert(pthread_getspecific(pkey_) == NULL);

pthread_setspecific(pkey_, newObj);

pthread_key_t pkey_;

static __thread T* t_value_;

static Deleter deleter_;//

template

__thread T* ThreadLocalSingleton::t_value_ = 0;

template

typename ThreadLocalSingleton::Deleter ThreadLocalSingleton::deleter_;

如果乙個人遇到乙個用科學無法解釋的問題他會怎麼辦呢?

清虛不塵 如果我是這個人,我不會說出我遇到的這個問題。因為我知道即便我說出這個問題,某些大佬也會以一百種科學來解釋,且不管是否解釋得通。只要題主量身為你定做題目,你就一定就機會出來胡扯 王時舟 如果是很重要的認知,就耐心繼續等待,如果不是那麼重要,只能暫時放棄。科學的解釋需要時間去鑽研,需要一代一代...

大學裡沒有遇到乙個知心的朋友是自己的問題嗎

說就說正事 自己剛剛回答的,搬到這裡 其實,個人感覺,知心或許並不代表有相同的話題,有相同的愛好,而且在於這個人我願意與他分享,我願意跟他說,就算他根本沒聽說過的事,不會因為他不懂而覺得不和我一路,而是我特別迫切的想分享給他,他對我也一樣。沒有什麼一定會發生,一切順其自然就好,做好自己,你會遇到那個...

遇到乙個問題,請各位給講解一下SQLAlchemy中的backref?

JIMMM 不知道理解得對不對 A類裡面有個屬性b,還有乙個C類 b db.relationship C A通過b訪問C 定義了backref後 b db.realtionship C backref db.backref d A可以通過b訪問C,並且C可以通過d訪問A 關於 relationshi...