There has been a lot of interest in thread safety lately, so I
thought I would post a short little example that uses an
innerclass to safely add an event to the event queue.

import tcl.lang.*;

public class EventExample {

  // Interact with the Tcl interp (must be called from event loop thread)

  void setXto1 (Interp interp)
      throws TclException
  {
          interp.eval("set x 1");
  }


  // This method can be safely called from any thread

  public void SAFE_setXto1(final Interp interp) {

    TclEvent event = new TclEvent() {
      public int processEvent (int flags) {
        try {
          setXto1(interp);
        } catch (TclException ex) {
          // Do something to handle the error
        }
        return 1;
      }
    };

    interp.getNotifier().queueEvent(event, TCL.QUEUE_TAIL);
    //event.sync(); // sync will block the calling thread
                    // until the event has been processed
  }

}


Mo Dejong
Red Hat Inc.

----------------------------------------------------------------
The TclJava mailing list is sponsored by Scriptics Corporation.
To subscribe:    send mail to [EMAIL PROTECTED]  
                 with the word SUBSCRIBE as the subject.
To unsubscribe:  send mail to [EMAIL PROTECTED] 
                 with the word UNSUBSCRIBE as the subject.
To send to the list, send email to '[EMAIL PROTECTED]'. 
An archive is available at http://www.mail-archive.com/tcljava@scriptics.com

Reply via email to