Browse Source

changes to thread code (directly use boost::thread)

- removes our NewThread() function an replaces remaining calls with
  boost::thread with our TraceThread template
- remove ExitThread() function
- fix THREAD_PRIORITY_ABOVE_NORMAL for non Windows OSes
0.10
Philip Kaufmann 12 years ago
parent
commit
53e71135de
  1. 11
      src/net.cpp
  2. 12
      src/util.cpp
  3. 9
      src/util.h

11
src/net.cpp

@ -389,11 +389,8 @@ bool GetMyExternalIP(CNetAddr& ipRet) @@ -389,11 +389,8 @@ bool GetMyExternalIP(CNetAddr& ipRet)
return false;
}
void ThreadGetMyExternalIP(void* parg)
void ThreadGetMyExternalIP()
{
// Make this thread recognisable as the external IP detection thread
RenameThread("bitcoin-ext-ip");
CNetAddr addrLocalHost;
if (GetMyExternalIP(addrLocalHost))
{
@ -1151,7 +1148,7 @@ void MapPort(bool fUseUPnP) @@ -1151,7 +1148,7 @@ void MapPort(bool fUseUPnP)
upnp_thread->join();
delete upnp_thread;
}
upnp_thread = new boost::thread(boost::bind(&TraceThread<boost::function<void()> >, "upnp", &ThreadMapPort));
upnp_thread = new boost::thread(boost::bind(&TraceThread<void (*)()>, "upnp", &ThreadMapPort));
}
else if (upnp_thread) {
upnp_thread->interrupt();
@ -1800,7 +1797,7 @@ void static Discover() @@ -1800,7 +1797,7 @@ void static Discover()
// Don't use external IPv4 discovery, when -onlynet="IPv6"
if (!IsLimited(NET_IPV4))
NewThread(ThreadGetMyExternalIP, NULL);
boost::thread(boost::bind(&TraceThread<void (*)()>, "ext-ip", &ThreadGetMyExternalIP));
}
void StartNode(boost::thread_group& threadGroup)
@ -1823,7 +1820,7 @@ void StartNode(boost::thread_group& threadGroup) @@ -1823,7 +1820,7 @@ void StartNode(boost::thread_group& threadGroup)
if (!GetBoolArg("-dnsseed", true))
printf("DNS seeding disabled\n");
else
threadGroup.create_thread(boost::bind(&TraceThread<boost::function<void()> >, "dnsseed", &ThreadDNSAddressSeed));
threadGroup.create_thread(boost::bind(&TraceThread<void (*)()>, "dnsseed", &ThreadDNSAddressSeed));
#ifdef USE_UPNP
// Map ports with UPnP

12
src/util.cpp

@ -1468,15 +1468,3 @@ void RenameThread(const char* name) @@ -1468,15 +1468,3 @@ void RenameThread(const char* name)
(void)name;
#endif
}
bool NewThread(void(*pfn)(void*), void* parg)
{
try
{
boost::thread(pfn, parg); // thread detaches when out of scope
} catch(boost::thread_resource_error &e) {
printf("Error creating thread: %s\n", e.what());
return false;
}
return true;
}

9
src/util.h

@ -488,8 +488,6 @@ public: @@ -488,8 +488,6 @@ public:
}
};
bool NewThread(void(*pfn)(void*), void* parg);
#ifdef WIN32
inline void SetThreadPriority(int nPriority)
{
@ -500,7 +498,7 @@ inline void SetThreadPriority(int nPriority) @@ -500,7 +498,7 @@ inline void SetThreadPriority(int nPriority)
#define THREAD_PRIORITY_LOWEST PRIO_MAX
#define THREAD_PRIORITY_BELOW_NORMAL 2
#define THREAD_PRIORITY_NORMAL 0
#define THREAD_PRIORITY_ABOVE_NORMAL 0
#define THREAD_PRIORITY_ABOVE_NORMAL (-2)
inline void SetThreadPriority(int nPriority)
{
@ -512,11 +510,6 @@ inline void SetThreadPriority(int nPriority) @@ -512,11 +510,6 @@ inline void SetThreadPriority(int nPriority)
setpriority(PRIO_PROCESS, 0, nPriority);
#endif
}
inline void ExitThread(size_t nExitCode)
{
pthread_exit((void*)nExitCode);
}
#endif
void RenameThread(const char* name);

Loading…
Cancel
Save