summaryrefslogtreecommitdiffstats
path: root/unix/tclUnixThrd.c
Commit message (Collapse)AuthorAgeFilesLines
* * unix/tclUnixThrd.c (Tcl_ConditionWait): fixed handling ofhobbs2001-03-291-2/+11
| | | | | | | timeout for threads (corrects excessive CPU usage issue for Tk on Unix in threaded Tcl environment). (ruppert) [Bug #411603] FossilOrigin-Name: bc12cdd261238ca984f6b6f833b453cdabe2fe1a
* 2000-05-02 Andreas Kupries <a.kupries@westend.com>kupries2000-05-021-2/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. FossilOrigin-Name: cdf262856d1872c95cf12baf78d90874dae1b03f
* * unix/tclUnixThrd.c: removed {}s around PTHREAD_MUTEX_INITIALIZERhobbs2000-04-251-3/+3
| | | | | | [Bug: 5254] FossilOrigin-Name: aa8d40b8f16a649414345d9cda8887137a120e25
* * unix/tclUnixNotfy.c (Tcl_FinalizeNotifier, NotifierThreadProc):hobbs2000-04-241-2/+2
| | | | | | | | | added write of 'q' into triggerPipe for notifier in threaded case, so that Tcl doesn't hang when children are still running [Bug: 4139] * unix/tclUnixThrd.c (Tcl_MutexLock): minor comment fixes. FossilOrigin-Name: b63233fd7f25b01da308adb425c8a26a6f11c837
* Fixed compiler warningswelch2000-04-111-3/+3
| | | FossilOrigin-Name: 7f42a656b65b2754b0cb13def2e9f8294b5e93e1
* * unix/tclUnixThrd.c (Tcl_CreateThread): moved TCL_THREADS ifdefhobbs2000-04-091-1/+5
| | | | | | | | inside of func as it is declared for non-threads builds as well. In the non-threads case, it always returns TCL_ERROR (couldn't create thread). FossilOrigin-Name: 26ed7e69c33d7d8c8b70a0997ed948a219509147
* 2000-04-08 Andreas Kupries <a.kupries@westend.com>kupries2000-04-091-19/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * 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. FossilOrigin-Name: 51f6c167f66056d7bb0b2490b8ac04ec0d454733
* * tests/unixFCmd.test:hobbs2000-01-121-0/+22
| | | | | | | | | | | | | | | | | | | | * unix/tclUnixFCmd.c: added support for symbolic permissions setting in SetPermissionsAttribute (file attr $file -perm ...) [Bug: 3970] * tests/expr.test: * unix/Makefile.in: * unix/configure.in: * unix/tcl.m4: strtod bug on Tru64 [Bug: 3378] and added tests to prevent unnecessary chmod +x in sources while installing, as well as more intelligent setsockopt/gethostbyname checks [Bug: 3366, 3389] * unix/tclUnixThrd.c: added compile time support (through use of the TCL_THREAD_STACK_MIN define) for increasing the default stack size for a thread. [Bug: 3797, 1966] FossilOrigin-Name: 21ead6fbd02991337ac04367072a0c171a5153ec
* Fixed level of indirection in Tcl_GetAllocMutexwelch1999-08-101-1/+2
| | | FossilOrigin-Name: 493612de836ab32db1adeea0f63330b3f5eafe7e
* Added Tcl_GetAllocMutex for use by tclAlloc.c and tclCkalloc.cwelch1999-08-101-25/+24
| | | FossilOrigin-Name: a5ed5c1af78a4d06c9a8ae4b4cfd8227a89c1b08
* * unix/tclUnixThrd.c: Applied patch to fix threads on Irix 6.5.redman1999-07-311-1/+3
| | | | | | | | | Patch from James Dennett. [Bug: 2450] * tests/info.test: Enable test for tclParse.c change (info complete). FossilOrigin-Name: 59e2b0685d1922a1729770f2f401fb7031de119b
* * unix/tclUnixThrd.c (TclpThreadCreate): Fixed memory leak wherestanton1999-06-211-3/+7
| | | | | | thread attributes were not being released. [Bug: 2254] FossilOrigin-Name: d3a52252795c496fca48384c185cbeeb601f8e31
* merged tcl 8.1 branch back into the main trunkstanton1999-04-161-0/+682
FossilOrigin-Name: f3b32fb71c9011ac220779bd9dbe5617c9dc87d9