Author: sayer
Date: 2008-11-05 18:36:35 +0100 (Wed, 05 Nov 2008)
New Revision: 1124

Modified:
   trunk/core/AmSession.cpp
   trunk/core/AmSession.h
Log:
session_num needs to be protected with mutex in multi core systems (cache)

Modified: trunk/core/AmSession.cpp
===================================================================
--- trunk/core/AmSession.cpp    2008-11-05 17:30:38 UTC (rev 1123)
+++ trunk/core/AmSession.cpp    2008-11-05 17:36:35 UTC (rev 1124)
@@ -50,6 +50,7 @@
 #include <sys/time.h>
 
 volatile unsigned int AmSession::session_num = 0;
+AmMutex AmSession::session_num_mut;
 
 
 // AmSession methods
@@ -320,7 +321,9 @@
   }
 #endif
 
+  session_num_mut.lock();
   session_num++;
+  session_num_mut.unlock();
 
   try {
     try {
@@ -368,7 +371,9 @@
 
   destroy();
 
+  session_num_mut.lock();
   session_num--;
+  session_num_mut.unlock();
     
   // wait at least until session is out of RtpScheduler
   //detached.wait_for();
@@ -409,7 +414,11 @@
 
 unsigned int AmSession::getSessionNum()
 {
-    return AmSession::session_num;
+  unsigned int res = 0;
+  session_num_mut.lock();
+  res = session_num;
+  session_num_mut.unlock();
+  return res;
 }
 
 

Modified: trunk/core/AmSession.h
===================================================================
--- trunk/core/AmSession.h      2008-11-05 17:30:38 UTC (rev 1123)
+++ trunk/core/AmSession.h      2008-11-05 17:36:35 UTC (rev 1124)
@@ -100,6 +100,7 @@
   AmCondition<bool> detached;
 
   static volatile unsigned int session_num;
+  static AmMutex session_num_mut;
 
   friend class AmMediaProcessor;
   friend class AmMediaProcessorThread;

_______________________________________________
Semsdev mailing list
[email protected]
http://lists.iptel.org/mailman/listinfo/semsdev

Reply via email to