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
| class Thread
{
public:
Thread(const char *name) : m_name(name) { }
void operator()()
{
/* set logger name in thread */
Logger::Init(m_name);
/* call GetInstance() and Write() in other functions with thread-local enabled */
Logger *logger = Logger::GetInstance();
for (int i = 0; i < 3; i++) {
logger->Write("Hello %d", i);
#ifdef _WIN32
Sleep(1000);
#else
sleep(1);
#endif
}
}
private:
string m_name;
};
int main()
{
boost::thread t1(Thread("name1"));
boost::thread t2(Thread("name2"));
t1.join();
t2.join();
return 0;
}
|