Tcl Source Code

All files named "generic/tclThreadJoin.c"
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

History for generic/tclThreadJoin.c

2023-10-13
13:50
Fix warning on MacOSX: "/Library/Developer/CommandLineTools/usr/bin/ranlib: file: libtcl8.6.a(tclAlloc.o) has no symbols". Backported from 8.7 file: [c024f8e0a2] check-in: [9cc0a7ac08] user: jan.nijtmans branch: core-8-6-branch, size: 9483
2023-09-12
18:31
More WIP file: [a4ccabefbc] check-in: [2e779e1e21] user: dgp branch: dgp-tcl-code, size: 9486
2023-04-12
14:25
Correct spelling errors in comments and documentation, but also a non-comment corrections in history.tcl and tcltest.test. file: [14509ac0ab] check-in: [d65da06a77] user: pooryorick branch: main, size: 9486
13:30
Correct spelling errors in comments and documentation, but also a non-comment corrections in history.tcl and tcltest.test. file: [15b551f3da] check-in: [aca8de0aeb] user: pooryorick branch: core-8-branch, size: 9482
09:35
Correct spelling errors in comments and documentation, but also non-comment corrections in history.tcl and tcltest.test. file: [72f8b20cb9] check-in: [ee3df4e647] user: pooryorick branch: core-8-6-branch, size: 9418
2023-03-28
18:58
Deleted: On Windows, join threads using Win32 HANDLEs.

This works by extending the existing WinThread structure with the thread's HANDLE. The lifetime of the WinThread structure is until the thread terminates, for non-joinable threads, or until the thread is joined. For joinable threadsd, the thread's HANDLE remains open; Windows signals the HANDLE when the thread terminates. The thread's return value is transported using the standard Windows mechanism.

A new thread-specific variable is introduced so a thread can find its WinThread structure. Initial threads (those not created via Tcl_CreateThread) receive a WinThread lazily, when Tcl_GetCurrentThread is called for the first time.

Instead of using the Windows ThreadId as the Tcl threadId, the address of the WinThread is used. The least significant bit of the pointer value is used to distinguish joinable threads from non-joinable threads. (For future use or debugging, the Windows ThreadId is stored in the WinThread structure as well.)

generic/tclThreadJoin.c is made redudant by this patch. check-in: [231c699c87] user: mchn1350 branch: windows-thread-join, size: 0

2021-04-03
13:53
Clean up the notifier code to not spread the hooks quite so widely file: [b7f92829da] check-in: [a263b27340] user: dkf branch: main, size: 9484
2021-03-21
13:07
Start of doing a clean up of the notifier code.

This originated as trying to stop macOS builds from doing silly warnings during a static build, but I noticed that there were common patterns that belong in generic code instead of being repeated in each of the platform-specific pieces. file: [986d6c8a37] check-in: [f48b613408] user: dkf branch: dkf/notifier-cleanup, size: 9480

2020-12-08
15:42
Merge 8.7 file: [bdd3813c04] check-in: [71493b571b] user: jan.nijtmans branch: main, size: 9434
15:31
Add -finput-charset=UTF-8 and -fextended-identifiers to gcc (and clang). All C sources can now use UTF-8, as far as gcc/clang/msvc support it. Not used yet file: [3be1d0d5f7] check-in: [4254aa305b] user: jan.nijtmans branch: core-8-branch, size: 9430
2020-02-28
12:46
Merge 8.7 file: [ae8eeac0ac] check-in: [b7af922d61] user: jan.nijtmans branch: trunk, size: 9438
2019-08-02
12:15
Merge 8.7. Continue implementation for win32 file: [c1607f3a99] check-in: [ff6fa30271] user: jan.nijtmans branch: cplusplus, size: 9434
2018-09-01
22:01
Change ckalloc and friends to Tcl_Alloc and friends. Add two defines, TCL_IO_FAILURE and TCL_NO_LENGTH (experimental, still open to be renamed following discussion) file: [50cae44793] check-in: [f13660b5a5] user: jan.nijtmans branch: memory-API, size: 9420
2014-02-10
11:59
Eliminate all usage of WIN32 and __WIN32__ macros: Some compilers (e.g. Clang/LLVM) don't define it, and _WIN32 is much more portable anyway. See: http://nadeausoftware.com/articles/2012/01/c_c_tip_how_use_compiler_predefined_macros_detect_operating_system#WindowsCygwinnonPOSIXandMinGW file: [914b22b19b] check-in: [80cf092cc7] user: jan.nijtmans branch: trunk, size: 9416
2012-11-15
17:55
More complete purge of things only present for supporting long-dead Mac 9 systems. file: [73b3fa5fb3] check-in: [7506775d52] user: dgp branch: core-8-4-branch, size: 9784
2011-03-12
15:06
Adjust ckalloc/ckfree macros to greatly reduce number of explicit casts in rest of Tcl source code. No ABI change. API change *should* be harmless. file: [73b3f1d86e] check-in: [5574bdd262] user: dkf branch: trunk, size: 9414
2011-03-02
20:27
Now that we're no longer using SCM based on RCS, the RCS Keyword lines cause more harm than good. Purged them (except in zlib files). file: [e7b9fb6569] check-in: [c64f310d38] user: dgp branch: trunk, size: 9442
16:06
Now that we're no longer using SCM based on RCS, the RCS Keyword lines cause more harm than good. Purged them. file: [4a44a19269] check-in: [79367df0f0] user: dgp branch: core-8-5-branch, size: 9442
2011-03-01
15:38
Now that we're no longer using SCM based on RCS, the RCS Keyword lines cause more harm than good. Purged them. file: [7f0ff5bcca] check-in: [90b4acd7bd] user: dgp branch: core-8-4-branch, size: 9815
2010-11-18
10:11
Next slice. file: [99f511700a] check-in: [16246c5c13] user: andreask branch: activestate-nre-excised-variant-1-roll-forward, size: 9515
2010-02-25
21:53
merge updates from HEAD file: [3cda8815d2] check-in: [1b11388844] user: dgp branch: dgp-refactor, size: 9519
2010-02-24
10:32
Pure whitespace changes, changing to follow Engineering Manual style. file: [64c519fdef] check-in: [c81eddebbb] user: dkf branch: trunk, size: 9515
2005-12-02
18:42
merge updates from HEAD file: [67dcea158e] check-in: [1059d34b2b] user: dgp branch: dgp-refactor, size: 9519
2005-11-07
15:12
ANSIfy file: [edec675821] check-in: [611d25e47c] user: dkf branch: trunk, size: 9515
2005-08-02
18:14
merge updates from HEAD file: [5fff97f4c5] check-in: [10feab7c07] user: dgp branch: kennykb-numerics-branch, size: 9542
2005-07-26
04:11
Merge updates from HEAD file: [2e4ef946a3] check-in: [8351a734a6] user: dgp branch: dgp-refactor, size: 9542
2005-07-19
22:45
Getting more systematic about style file: [a90e03b231] check-in: [f9332bdd5d] user: dkf branch: trunk, size: 9538
2004-03-26
22:28
Merge updates from HEAD. file: [006336535a] check-in: [6e8d2d7ba1] user: dgp branch: dgp-refactor, size: 9853
2004-03-17
18:14
Removed support for Mac OS Classic platform [Patch 918142] file: [89cc3cd331] check-in: [b6330dbac7] user: das branch: trunk, size: 9849
2002-06-10
05:33
Merging with TOT as of 06/09/2002. file: [e2a3923f75] check-in: [73b68fb238] user: wolfsuit branch: macosx-8-4-branch, size: 9898
2002-04-24
20:35
noted that this code isn't needed on unix file: [9ff9cdd1de] check-in: [69055b5c78] user: hobbs branch: trunk, size: 9890
2002-02-05
02:21
Merging with the current TOT. Very few conflicts, mostly in the generated files. file: [bd509c6f17] check-in: [f469a31a06] user: wolfsuit branch: macosx-8-4-branch, size: 9773
2002-01-04
15:43
* generic/tclThreadJoin.c (TclRememberJoinableThread,TclJoinThread): Replaced Tcl_Alloc and Tcl_Free calls with ckalloc and ckfree so that memory debugging is supported.
file: [b8cd81b7ee] check-in: [7fbf4354d0] user: dgp branch: trunk, size: 9763
2000-05-06
19:51
2000-05-06 Andreas Kupries <[email protected]> operating as proxy for David Gravereaux <[email protected]>
* tclThreadJoin.c: Fixed several places with missing a & in arguments to calls of Tcl_Mutex(Un)lock and Tcl_ConditionNotify functions.
file: [60a112278e] check-in: [d0d9090813] user: kupries branch: trunk, size: 9771
2000-05-02
22:02
Added: 2000-05-02 Andreas Kupries <[email protected]>
* 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.
file: [2f71f8d83c] check-in: [cdf262856d] user: kupries branch: trunk, size: 9750