| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
| | |
| | |
| | |
| | |
| | |
| | | |
to recognize when being called with NULL argument. This is a
signal for it to clean up the tsd key associated with the
threading allocator. Part of fixing the Tcl Bug #1178445.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclThreadAlloc.c: threaded debug build on Windows
* win/tclWinThrd.c: now works again. Had to touch Unix
* unix/tclUnixThrd.c: as well. Basic patch by Kevin, with
modifications by myself.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclInt.h: fully cleanup on exit and allow for
* generic/tclThreadAlloc.c: reinitialization. [Bug #736426]
* unix/tclUnixThrd.c: (mistachkin, kenny)
* win/tclWinThrd.c:
|
| | |
| | |
| | |
| | | |
users never creating interpreters.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
* generic/tclThread.c:
* generic/tclEvent.c:
* unix/tclUnixThrd.c:
* win/tclWinThrd.c: Provisions made so masterLock, initLock,
allocLock and joinLock mutexes can be recovered during
Tcl_Finalize.
|
| | | |
|
| | |
| | |
| | |
| | |
| | | |
called from the stack frame of DllMain's PROCESS_DETACH, the
wait operation should timeout and continue.
|
| | | |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
the code to catch any errors returned by the windows functions
handling TLS ASAP instead of waiting to get some mysterious
crash later on due to bogus pointers. Patch provided by Joe
Mistachkin.
This is a stop-gap measure to deal with the low number of ?TLS
slots provided by some of the variants of Windows (60-80).
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
backported from HEAD. Still
configure script not modified,
so CYGWIN build is still
disabled. Reason: although the
build succeeds with those changes,
many tests still fail.
|
|/ /
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* library/tclIndex: Removed reference to no-longer-extant procedure
'tclLdAout'.
* doc/library.n: Corrected mention of 'auto_exec' to 'auto_execok'.
[Patch 2114900] thanks to Stu Cassoff <stwo@users.sf.net>
Backport of 2008-11-26 commit from Kevin Kenny.
* win/tclWinThrd.c (TclpThreadCreate): We need to initialize the
thread id variable to 0 as on 64 bit windows this is a pointer sized
field while windows only fills it with a 32 bit value. The result is
an inability to join the threads as the ids cannot be matched.
Backport of 2008-10-13 commit from Pat Thoyts.
|
| |
| |
| |
| |
| |
| | |
This allows exit handlers that are registered later to
re-initialize this subsystem in case they need to use some sync
primitives (cond variables) from this file again.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
| |
| |
| |
| | |
when being called with NULL argument. This is a signal for it to clean up
the tsd key associated with the threading allocator.
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* tests/winDde.test: registry and dde packages by using the info
* win/Makefile.in: from makefiles to tell tcltest where to load
* win/makefile.vc: them from. This avoids grabbing the wrong
package from $auto_path which might be the install point rather than
the dev location. Kudos to Jennifer Hom for adding -load and
-loadfile to the tcltest package. [Bug 926088]
|
| |
| |
| |
| |
| |
| |
| | |
* generic/tclInt.h: fully cleanup on exit and allow for
* generic/tclThreadAlloc.c: reinitialization. [Bug #736426]
* unix/tclUnixThrd.c: (mistachkin, kenny)
* win/tclWinThrd.c:
|
| |
| |
| |
| | |
sake of Tcl API users never creating Tcl interpreters.
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* generic/tclThread.c:
* generic/tclEvent.c:
* unix/tclUnixThrd.c:
* win/tclWinThrd.c: Provisions made so masterLock, initLock,
allocLock and joinLock mutexes can be recovered during
Tcl_Finalize.
|
| |
| |
| |
| |
| | |
to see if there are waiters else uninitialized datum is manipulated.
[Bug 849007]
|
| |
| |
| |
| |
| |
| |
| | |
to 'Tcl_Panic' (the function). The #define
of panic in tcl.h clearly states it is
deprecated in the comments.
[Patch 865264]
|
| | |
|
|/
|
|
|
|
|
|
|
|
| |
the code to catch any errors returned by the windows functions
handling TLS ASAP instead of waiting to get some mysterious
crash later on due to bogus pointers. Patch provided by Joe
Mistachkin.
This is a stop-gap measure to deal with the low number of ?TLS
slots provided by some of the variants of Windows (60-80).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tcl.h: Add if defined(__MINGW32__)
check to code that sets the TCL_WIDE_INT_TYPE
and TCL_LL_MODIFIER.
* generic/tclClock.c (FormatClock): Don't
define savedTimeZone and savedTZEnv if
we are not going to use them.
* generic/tclEnv.c: Add cast to avoid warning.
* win/tclWinChan.c: Use DWORD instead of int
to avoid compiler warning.
* win/tclWinThrd.c: Only define allocLock,
allocLockPtr, and dataKey when TCL_THREADS
is defined. This avoid a compiler warning
about unused variables.
|
|
|
|
|
| |
* generic/tclThread.c (TclFinalizeThreadData): TclpMasterUnlock
must exist and be called unconditional of TCL_THREADS. [Bug #651139]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* win/tclWinPipe.c:
* win/tclWinSerial.c:
* win/tclWinSock.c:
* win/tclWinThrd.c:
* win/tclWinTime.c: General cleanup of all worker threads used
by the channel drivers. Eliminates the normal case where the
worker thread is terminated ('cept the winsock one). Instead,
use kernel events to signal a clean exit. Only when the worker
thread is blocked on an I/O call is the thread terminated.
Essentially, this makes all other channel worker threads behave
like the PipeReaderThread() function for it's cleaner exit
behavior. This appears to fix [Bug 597924] but needs 3rd party
confirmation to close the issue.
|
|
|
|
|
|
|
| |
improper compiler macros that missed the VC++ compiler. This
resulted in VC++ builds using CreateThread()/ExitThread() in place
of the proper _beginthreadex()/_endthreadex(). This was a large
error and am surprised I missed seeing it earlier.
|
|
|
|
|
| |
Applied patch for bug #599428, provided by Miguel Sofer
<msofer@users.sourceforge.net>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* generic/tclInt.h:
* generic/tclThreadAlloc.c (new):
* unix/Makefile.in:
* unix/tclUnixThrd.c:
* win/Makefile.in:
* win/tclWinInt.h:
* win/tclWinThrd.c: added new threaded allocator contributed by
AOL that significantly reduces lock contention when multiple
threads are in use. Only Windows and Unix implementations are
ready, and the Windows one may need work. It is only used by
default on Unix for now, and requires that USE_THREAD_ALLOC be
defined (--enable-threads on Unix will define this).
|
|
|
|
|
| |
_endthreadex to unsigned instead of DWORD to match the Win32
function prototype.
|
|
|
|
|
| |
a c-runtime implimentation of _beginethreadex normal, I reversed the logic
to not assume, and use when is.
|
|
|
|
|
| |
the main #ifdef TCL_THREADS block to avoid mingw warning about it
being there but unused.
|
|
|
|
|
|
| |
not surprisingly, doesn't have the MSVCRT specific _beginthreadex /
_endthreadex pair. This might have to be revisited for proper
Borland, lcc32, Watcom and other support as well.
|
|
|
|
| |
added DeleteCriticalSection calls for cleanup [Patch: #419683]
|
|
|
|
|
|
| |
HANDLE returned by _beginthreadex. The MS documentation
states that this handle is not closed by a later call to
_endthreadex.
|
|
|
|
|
|
|
|
|
|
| |
* win/tclWinPipe.c:
* win/tclWinPort.h:
* win/tclWinSerial.c:
* win/tclWinThrd.c:
Remove unnecessary #includes of dos.h, direct.h,
and tchar.h. This will help the Cygwin porting
effort since these headers do not exist under Cygwin.
|
|
|
|
|
|
|
|
| |
* win/tclWinInit.c:
* win/tclWinNotify.c:
* win/tclWinPipe.c:
* win/tclWinReg.c:
* win/tclWinThrd.c: Applied patch from [Bug 5794].
|
|
|
|
|
|
|
| |
operating as proxy for David Gravereaux <davygrvy@pobox.com>
* win/tclWinThrd.c (TclpInitLock, TclpMasterLock): Added missing
initialization of joinLock.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Overall changes:
(1) Implementation of joinable threads for all platforms.
(2) Additional API's for channels. Required to allow the
thread extension to move channels between threads.
* generic/tcl.decls (lines 1360f): Added Tcl_JoinThread,
Tcl_IsChannelShared, Tcl_IsChannelRegistered, Tcl_CutChannel,
Tcl_SpliceChannel, Tcl_IsChannelExisting and
Tcl_ClearChannelHandlers (slots 394 to 400).
* generic/tclIO.c: Implemented Tcl_IsChannelRegistered,
Tcl_IsChannelShared, Tcl_CutChannel, Tcl_SpliceChannel,
Tcl_IsChannelExisting and Tcl_ClearChannelHandlers.
Tcl_CutChannel uses code from CloseChannel. Replaced this code
by a call to Tcl_CutChannel. Replaced several code fragments
adding channels to the channel list with calls to
Tcl_SpliceChannel. Removed now unused variables from
CloseChannel and Tcl_UnstackChannel. Tcl_ClearChannelHandlers
uses code from Tcl_Close. Replaced this code by a call to
Tcl_ClearChannelHandlers. Removed now unused variables from
Tcl_Close. Added the subcommands 'cut', 'forgetch', 'splice' and
'isshared' to the test code
(TclTestChannelCmd).
* unix/tclUnixThread.c: Implemented Tcl_JoinThread using the
pthread-functionality.
* win/tclWinThrd.c: Fixed several small typos in comments.
Implemented Tcl_JoinThread using a platform independent
emulation layer (see generic/tclThreadJoin.c below). Added
'joinLock' to serialize Tcl_CreateThread and TclpExitThread to
prevent a race for joinable threads.
* mac/tclMacThrd.c: Implemented Tcl_JoinThread using a platform
independent emulation layer (see generic/tclThreadJoin.c
below). Due to the cooperative nature of threading on this
platform the race mentioned above is not present.
* generic/tclThreadJoin.c: New file. Contains a platform
independent emulation layer helping in the implementation of
joinable threads for the win and mac platforms.
* generic/tclInt.h: Added declarations for TclJoinThread,
TclRememberJoinableThread and TclSignalExitThread. These
procedures define the API of the emulation layer for joinable
threads (see generic/tclThreadJoin.c above).
* win/Makefile.in:
* win/makefile.vc: Added generic/tclTheadJoin.o to the rules.
* mac/: I don't know to which file generic/tclTheadJoin.o has to
be added to so that it compiles. Sorry.
* unix/tclUnixChan.c: #ifdef'd the thread-local list of file
channels as it prevents us from transfering channels. To restore
this we may need an extended interface to drivers in the
future. Target: 9.0. Found while testing the new transfer of
channels. The information in this list for a channel was left
behind and then crashed the system during finalization.
* generic/tclThreadTest.c: Added -joinable flag to 'testthread
create'. Added subcommand 'testthread join'.
* doc/CrtChannel.3: Added documentation for Tcl_IsChannelRegistered,
Tcl_IsChannelShared, Tcl_CutChannel, Tcl_SpliceChannel,
Tcl_IsChannelExisting and Tcl_ClearChannelHandlers.
* doc/Thread.3: Added documentation for Tcl_JoinThread.
* tests/thread.test: Added tests for joining of threads.
|
|
|
|
|
|
|
|
|
|
|
| |
* library/reg1.0/pkgIndex.tcl:
* win/tclWinChan.c:
* win/tclWinThrd.c: converted CRLF to LF the */tcl.hpj.in files
were not converted, as it confuses hcw locally. [Bug: 5096]
* win/Makefile.in: expanded cleanup or help files
* doc/Thread.3: minor macro cleanup
|
|
|
|
| |
macros for declaring the NewThread callback proc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Overall change: Definition of a public API for the creation of
new threads.
* generic/tclInt.h (line 1802f): Removed the definition of
'TclpThreadCreate'. (line 793f) Removed the definition of
'Tcl_ThreadCreateProc'.
* generic/tcl.h (line 388f): Readded the definition of
'Tcl_ThreadCreateProc'. Added Win32 stuff send in by David
Graveraux <davygrvy@bigfoot.com> to that too (__stdcall,
...). Added macros for the default stacksize and allowed flags.
* generic/tcl.decls (line 1356f): Added definition of
'Tcl_CreateThread', slot 393 of the stub table. Two new
arguments in the public API, for stacksize and flags.
* win/tclWinThrd.c:
* mac/tclMacThrd.c: Renamed TclpThreadCreate to Tcl_CreateThread,
added handling of the stacksize. Flags are currently ignored.
* unix/tclUnixThrd.c: See above, but handles joinable
flag. Ignores the specified stacksize if the macro
HAVE_PTHREAD_ATTR_SETSTACKSIZE is not defined.
* generic/tclThreadTest.c (line 363): See below.
* unix/tclUnixNotfy.c (line 210): Adapted to the changes
above. Uses default stacksize and no flags now.
* unic/tcl.m4 (line 382f): Added a check for
'pthread_attr_setstacksize' to detect platforms not implementing
this feature of pthreads. If it is implemented, configure will
define the macro HAVE_PTHREAD_ATTR_SETSTACKSIZE (See
unix/tclUnixThrd.c too).
* doc/Thread.3: Added Tcl_CreateThread and its arguments to the
list of described functions. Removed stuff about not providing a
public C-API for thread-creation.
|