Difference between revisions of "Ns critsec"

From AOLserver Wiki
Jump to navigation Jump to search
(imported from WiKit id 543)
 
(Added an example)
Line 29: Line 29:
 
'''EXAMPLES'''
 
'''EXAMPLES'''
  
     # need an example here
+
Is this the right way to use this command? The example is contrived, but I wanted to call ns_critsec multiple times.
 +
 
 +
    # If a thread is executing either of these procs, no other
 +
     # thread can execute any of these procs until first first
 +
    # thread has completely finished.
 +
   
 +
    nsv_set . special_file_critsec [ns_critsec create]
 +
   
 +
    proc write_special_file {data} {
 +
        ns_critsec enter [nsv_get . special_file_critsec]
 +
        set handle [open special_file w]
 +
        puts $handle $data
 +
        close $handle
 +
        ns_critsec leave [nsv_get . special_file_critsec]
 +
    }
 +
   
 +
    proc read_special_file {} {
 +
        ns_critsec enter [nsv_get . special_file_critsec]
 +
        set handle [open special_file r]
 +
        set result [read $handle]
 +
        close $handle
 +
        ns_critsec leave [nsv_get . special_file_critsec]
 +
        return $result
 +
    }
  
 
'''SEE ALSO'''
 
'''SEE ALSO'''

Revision as of 19:54, 21 June 2006

Man page: http://aolserver.com/docs/tcl/ns_critsec.html


NAME

ns_critsec - Operate on critical section objects

SYNOPSIS

ns_critsec option ?arg arg ...?

DESCRIPTION

This command provides a mechanism to manipulate critical section objects. The legal options (which may be abbreviated) are:
  • ns_critsec create
Initializes a new critical section object and returns a handle to it.
  • ns_critsec destroy object
Destroys the critical section object and frees any resources it was using.
  • ns_critsec enter object
Enters the critical section. The thread will block if another thread is already in the critical section.
  • ns_critsec leaves object
Leaves the critical section. When the thread leaves the critical section as many times as it has entered, a notification will be sent to other threads that are waiting on the critical section.

EXAMPLES

Is this the right way to use this command? The example is contrived, but I wanted to call ns_critsec multiple times.

   # If a thread is executing either of these procs, no other
   # thread can execute any of these procs until first first
   # thread has completely finished.
   
   nsv_set . special_file_critsec [ns_critsec create]
   
   proc write_special_file {data} {
       ns_critsec enter [nsv_get . special_file_critsec]
       set handle [open special_file w]
       puts $handle $data
       close $handle
       ns_critsec leave [nsv_get . special_file_critsec]
   }
   
   proc read_special_file {} {
       ns_critsec enter [nsv_get . special_file_critsec]
       set handle [open special_file r]
       set result [read $handle]
       close $handle
       ns_critsec leave [nsv_get . special_file_critsec]
       return $result
   }

SEE ALSO

ns_cond, ns_event, ns_mutex, ns_thread

Category Documentation - Category Core Tcl API