11 #ifndef ASIO_DETAIL_WINCE_THREAD_HPP 12 #define ASIO_DETAIL_WINCE_THREAD_HPP 14 #if defined(_MSC_VER) && (_MSC_VER >= 1200) 16 #endif // defined(_MSC_VER) && (_MSC_VER >= 1200) 20 #if defined(ASIO_WINDOWS) && defined(UNDER_CE) 33 DWORD WINAPI wince_thread_function(LPVOID arg);
40 template <
typename Function>
41 wince_thread(Function f,
unsigned int = 0)
43 std::auto_ptr<func_base> arg(
new func<Function>(f));
45 thread_ = ::CreateThread(0, 0, wince_thread_function,
46 arg.get(), 0, &thread_id);
49 DWORD last_error = ::GetLastError();
60 ::CloseHandle(thread_);
66 ::WaitForSingleObject(thread_, INFINITE);
70 friend DWORD WINAPI wince_thread_function(LPVOID arg);
75 virtual ~func_base() {}
76 virtual void run() = 0;
79 template <
typename Function>
101 inline DWORD WINAPI wince_thread_function(LPVOID arg)
103 std::auto_ptr<wince_thread::func_base> func(
104 static_cast<wince_thread::func_base*>(arg));
114 #endif // defined(ASIO_WINDOWS) && defined(UNDER_CE) 116 #endif // ASIO_DETAIL_WINCE_THREAD_HPP void throw_error(const asio::error_code &err)
const asio::error_category & get_system_category()
Class to represent an error code value.