summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorandreas_kupries <akupries@shaw.ca>2001-03-30 23:06:39 (GMT)
committerandreas_kupries <akupries@shaw.ca>2001-03-30 23:06:39 (GMT)
commit48f8dee3a1a0e24705f0e328314065e9dc602993 (patch)
tree54aac1cde138798340a664ebb66533625a892063 /tests
parent04bc231d0eaa06994bc6cab2b61b518e200fab0c (diff)
downloadtcl-48f8dee3a1a0e24705f0e328314065e9dc602993.zip
tcl-48f8dee3a1a0e24705f0e328314065e9dc602993.tar.gz
tcl-48f8dee3a1a0e24705f0e328314065e9dc602993.tar.bz2
2001-03-30 Andreas Kupries <andreas_kupries@users.sourceforge.net>
* All of the changes below belong to TIP #10 [Tcl I/O Enhancement: Thread-Aware Channels]. See also [Patch #403358] at SF. * generic/tclIO.h (struct ChannelState, line 236f): Extended the structure with a new field of type 'Tcl_ThreadId' to hold the id of the thread currently managing all channels with this state. Note: This structure is shared by all channels in a stack of transformations. * generic/tclIO.c (Tcl_CreateChannel, lines 1058-1065): Modified to store the Id of the current thread in the 'ChannelState' of the new channel. * generic/tclIO.c (Tcl_SpliceChannel, lines 2265-2270): Modified in the same manner as 'Tcl_CreateChannel' as the channel will be managed by the current thread afterward. * generic/tclIO.c (Tcl_GetChannelThread, lines 1478-1503): * generic/tcl.decls (Tcl_GetChannelThread, lines 1504-1506): New API function to retrieve the Id of the managing thread from a channel. Implementation and declaration. * generic/tclTest.c (TestChannelCmd, lines 4520-4532): Added subcommand 'mthread' to query a channel about its managing thread.
Diffstat (limited to 'tests')
-rw-r--r--tests/io.test38
1 files changed, 24 insertions, 14 deletions
diff --git a/tests/io.test b/tests/io.test
index 9c93903..044a803 100644
--- a/tests/io.test
+++ b/tests/io.test
@@ -12,7 +12,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: io.test,v 1.14 2000/04/10 17:19:00 ericm Exp $
+# RCS: @(#) $Id: io.test,v 1.15 2001/03/30 23:06:40 andreas_kupries Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
package require tcltest
@@ -6722,6 +6722,29 @@ test io-58.1 {Tcl_NotifyChannel and error when closing} {unixOrPc} {
list $x $result
} {1 {gets {normal message from pipe} gets {} catch {error message from pipe}}}
+
+
+if {[info commands testthread] != {}} {
+ set mainthread [testthread id]
+} else {
+ set mainthread 0
+}
+
+test io-59.1 {Thread reference of channels} {
+ # TIP #10
+ # More complicated tests (like that the reference changes as a
+ # channel is moved from thread to thread) can be done only in the
+ # extension which fully implements the moving of channels between
+ # threads, i.e. 'Threads'. Or we have to extend [testthread] as well.
+
+ set f [open longfile r]
+ set result [testchannel mthread $f]
+ close $f
+ set result
+} $mainthread
+
+
+
# cleanup
foreach file [list fooBar longfile script output test1 pipe my_script foo \
bar test2 test3 cat stdout] {
@@ -6730,16 +6753,3 @@ foreach file [list fooBar longfile script output test1 pipe my_script foo \
::tcltest::restoreState
::tcltest::cleanupTests
return
-
-
-
-
-
-
-
-
-
-
-
-
-