mozilla
Your Search Results

    XPCOM Thread Synchronization

    この記事はまだ日本語に翻訳されていません。MDN の翻訳はボランティアによって行われています。是非 MDN に登録し、私たちの力になって下さい。

    XPCOM thread synchronization primitives have the same semantics as those in NSPR, and each method of these synchronization objects (e.g. Mutex::Lock()) has a matching function in NSPR (PR_Lock()). This is no accident, as mozilla:: primitives are merely bare-minimum wrappers around NSPR's.

    This article covers the API of Mozilla synchronization only. For a higher-level introduction to thread synchronization, see Introduction_to_NSPR.

    Quick reference: Difference between nsAutoLock API and new API

    Old construction

     

    Note: This is deprecated code that is shown only to compare with approved code.
      PRLock* mLock;
      PRMonitor* mMonitor;
      PRCondVar* mCvar;
    
      FooConstructor() {
      }
      nsresult Init() {
          mLock = nsAutoLock::NewLock("Foo lock");
          // check for null
    
          mMonitor = nsAutoMonitor::NewMonitor("Foo monitor");
          // check for null
    
          mCvar = PR_NewCondVar(mRawLock);
          // check for null
    
          // ...
      }
    

     

    New Construction

     

      using namespace mozilla;
    
      Mutex mLock;
      Monitor mMonitor;
      CondVar mCvar;
    
      FooConstructor() 
          : mLock("Foo lock"),
            mMonitor("Foo monitor"),
            mCvar(mLock, "Foo condvar") {
      }
      nsresult Init() {
          // ...
      }
    

     

    Old Usage

     

    Note: This is deprecated code that is shown only to compare with approved code.
      ConcurrentMethod() {
          nsAutoLock al(mLock);
          nsAutoMonitor am(mMonitor);
          if (needExpensiveComputation()) {
              nsAutoUnlock au(mLock);
          }
          am.Wait();
          PR_NotifyCondVar(mCvar);
      }
    

     

    New Usage

     

      using namespace mozilla;
    
      ConcurrentMethod() {
          MutexAutoLock al(mLock);
          MonitorAutoEnter am(mMonitor);
          if (needExpensiveComputation()) {
              MutexAutoUnlock au(mLock);
          }
          am.Wait();
          mCvar->Notify();
      }
    

     

    Mozilla Synchronization API reference

    The mozilla:: namespace exports the following synchronization primitives.

    ドキュメントのタグと貢献者

    Contributors to this page: cgj
    最終更新者: cgj,