Version: 9.16.0
SALOMEDS.hxx
Go to the documentation of this file.
1// Copyright (C) 2007-2026 CEA, EDF, OPEN CASCADE
2//
3// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5//
6// This library is free software; you can redistribute it and/or
7// modify it under the terms of the GNU Lesser General Public
8// License as published by the Free Software Foundation; either
9// version 2.1 of the License, or (at your option) any later version.
10//
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14// Lesser General Public License for more details.
15//
16// You should have received a copy of the GNU Lesser General Public
17// License along with this library; if not, write to the Free Software
18// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19//
20// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21//
22
23// SALOME SALOMEDS : data structure of SALOME and sources of Salome data server
24// File : SALOMEDS.hxx
25// Author : Sergey ANIKIN
26// Module : SALOME
27// $Header$
28//
29#ifndef SALOMEDS_HeaderFile
30#define SALOMEDS_HeaderFile
31
32#include "SALOMEDS_Defines.hxx"
33
34#include <Utils_Mutex.hxx>
35
36namespace SALOMEDS
37{
38 // PAL8065: san -- Implementation of convenient locker based on simple recursive
39 // mutex for POSIX platforms.
40 // This class is to protect SALOMEDS CORBA methods which deal with OCC calls from
41 // parallel access by several threads
42 // To protect some method, an instance of Locker class should be created
43 // on the stack at the beginning of guarded code:
44 //
45 // Locker lock;
46 //
48 {
49 public:
50 Locker();
51 virtual ~Locker();
52
53 private:
55
56 friend void lock();
57 friend void unlock();
58 };
59
60 // Convenient functions to lock/unlock the global SALOMEDS mutex temporarily.
61 // In particular, "unlock-dosomething-lock" scheme should be used, when some non-SALOMEDS
62 // CORBA interface is called (component's engine), to avoid deadlocks in case of
63 // indirect recursion.
64 void lock();
65 void unlock();
66}
67
68#endif
#define SALOMEDS_EXPORT
Definition: SALOMEDS_Defines.hxx:37
Definition: SALOMEDS.hxx:48
static Utils_Mutex MutexDS
Definition: SALOMEDS.hxx:54
friend void unlock()
friend void lock()
Definition: Utils_Mutex.hxx:53
Definition: Utils_Mutex.hxx:37
This package contains the interfaces used for creation, management and modification of the Study.
Definition: SALOMEDS.hxx:37
void lock()
Definition: SALOMEDS.cxx:60
void unlock()
Definition: SALOMEDS.cxx:65