fixed calling blocking functions simultaneously from multiple threads
This commit is contained in:
parent
897e615a86
commit
ac3444c71e
|
@ -262,21 +262,21 @@ namespace libtorrent
|
|||
mutex::scoped_lock l(m_impl->mut); \
|
||||
m_impl->cond.clear(l); \
|
||||
m_impl->m_io_service.post(boost::bind(&fun_wrap, &done, &m_impl->cond, &m_impl->mut, boost::function<void(void)>(boost::bind(&session_impl:: x, m_impl.get())))); \
|
||||
do { m_impl->cond.wait(l); } while(!done)
|
||||
do { m_impl->cond.wait(l); m_impl->cond.clear(l); } while(!done)
|
||||
|
||||
#define TORRENT_SYNC_CALL1(x, a1) \
|
||||
bool done = false; \
|
||||
mutex::scoped_lock l(m_impl->mut); \
|
||||
m_impl->cond.clear(l); \
|
||||
m_impl->m_io_service.post(boost::bind(&fun_wrap, &done, &m_impl->cond, &m_impl->mut, boost::function<void(void)>(boost::bind(&session_impl:: x, m_impl.get(), a1)))); \
|
||||
do { m_impl->cond.wait(l); } while(!done)
|
||||
do { m_impl->cond.wait(l); m_impl->cond.clear(l); } while(!done)
|
||||
|
||||
#define TORRENT_SYNC_CALL2(x, a1, a2) \
|
||||
bool done = false; \
|
||||
mutex::scoped_lock l(m_impl->mut); \
|
||||
m_impl->cond.clear(l); \
|
||||
m_impl->m_io_service.post(boost::bind(&fun_wrap, &done, &m_impl->cond, &m_impl->mut, boost::function<void(void)>(boost::bind(&session_impl:: x, m_impl.get(), a1, a2)))); \
|
||||
do { m_impl->cond.wait(l); } while(!done)
|
||||
do { m_impl->cond.wait(l); m_impl->cond.clear(l); } while(!done)
|
||||
|
||||
#define TORRENT_SYNC_CALL_RET(type, x) \
|
||||
bool done = false; \
|
||||
|
@ -284,7 +284,7 @@ namespace libtorrent
|
|||
mutex::scoped_lock l(m_impl->mut); \
|
||||
m_impl->cond.clear(l); \
|
||||
m_impl->m_io_service.post(boost::bind(&fun_ret<type>, &r, &done, &m_impl->cond, &m_impl->mut, boost::function<type(void)>(boost::bind(&session_impl:: x, m_impl.get())))); \
|
||||
do { m_impl->cond.wait(l); } while(!done)
|
||||
do { m_impl->cond.wait(l); m_impl->cond.clear(l); } while(!done)
|
||||
|
||||
#define TORRENT_SYNC_CALL_RET1(type, x, a1) \
|
||||
bool done = false; \
|
||||
|
@ -292,7 +292,7 @@ namespace libtorrent
|
|||
mutex::scoped_lock l(m_impl->mut); \
|
||||
m_impl->cond.clear(l); \
|
||||
m_impl->m_io_service.post(boost::bind(&fun_ret<type>, &r, &done, &m_impl->cond, &m_impl->mut, boost::function<type(void)>(boost::bind(&session_impl:: x, m_impl.get(), a1)))); \
|
||||
do { m_impl->cond.wait(l); } while(!done)
|
||||
do { m_impl->cond.wait(l); m_impl->cond.clear(l); } while(!done)
|
||||
|
||||
#define TORRENT_SYNC_CALL_RET2(type, x, a1, a2) \
|
||||
bool done = false; \
|
||||
|
@ -300,7 +300,7 @@ namespace libtorrent
|
|||
mutex::scoped_lock l(m_impl->mut); \
|
||||
m_impl->cond.clear(l); \
|
||||
m_impl->m_io_service.post(boost::bind(&fun_ret<type>, &r, &done, &m_impl->cond, &m_impl->mut, boost::function<type(void)>(boost::bind(&session_impl:: x, m_impl.get(), a1, a2)))); \
|
||||
do { m_impl->cond.wait(l); } while(!done)
|
||||
do { m_impl->cond.wait(l); m_impl->cond.clear(l); } while(!done)
|
||||
|
||||
#define TORRENT_SYNC_CALL_RET3(type, x, a1, a2, a3) \
|
||||
bool done = false; \
|
||||
|
@ -308,7 +308,7 @@ namespace libtorrent
|
|||
mutex::scoped_lock l(m_impl->mut); \
|
||||
m_impl->cond.clear(l); \
|
||||
m_impl->m_io_service.post(boost::bind(&fun_ret<type>, &r, &done, &m_impl->cond, &m_impl->mut, boost::function<type(void)>(boost::bind(&session_impl:: x, m_impl.get(), a1, a2, a3)))); \
|
||||
do { m_impl->cond.wait(l); } while(!done)
|
||||
do { m_impl->cond.wait(l); m_impl->cond.clear(l); } while(!done)
|
||||
|
||||
session::session(
|
||||
fingerprint const& id
|
||||
|
|
Loading…
Reference in New Issue