documented how to use sockets in non-main thread (patch 951134)

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28464 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2004-07-25 12:41:14 +00:00
parent 7df69621d9
commit 4cc90442d0
2 changed files with 27 additions and 0 deletions

View File

@@ -122,6 +122,26 @@ bool wxSocketBase::Initialize()
{
if ( !m_countInit++ )
{
#ifdef __WXMSW__
/*
The following asserting might be neccessary for linux as well,
but I cannot verify this.
*/
wxASSERT(wxThread::IsMain(),
wxT("To use sockets in a secondary thread, ")
wxT("call wxSocketBase::Initialize() from the main thread."));
/*
Details: Initialize() creates a hidden window as a sink for socket
events, such as 'read completed'. wxMSW has only one message loop
for the main thread. If Initialize is called in a secondary thread,
the socket window will be created for the secondary thread, but
since there is no message loop on this thread, it will never
receive events and all socket operations will time out.
BTW, the main thread must not be stopped using sleep or block
on a semaphore (a bad idea in any case) or socket operations
will time out.
*/
#endif
wxAppTraits *traits = wxAppConsole::GetInstance() ?
wxAppConsole::GetInstance()->GetTraits() : NULL;
GSocketGUIFunctionsTable *functions =