Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/buffer_client.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/buffer_client.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/buffer_client.cpp	(revision 2260)
@@ -248,14 +248,6 @@
     MPI_Status status;
     int flag;
-    
-    if (hasWindows)
-    { 
-      MPI_Win_lock(MPI_LOCK_EXCLUSIVE, clientRank_, 0, windows_[0]) ;
-      MPI_Win_unlock(clientRank_, windows_[0]) ;
-
-      MPI_Win_lock(MPI_LOCK_EXCLUSIVE, clientRank_, 0, windows_[1]) ;
-      MPI_Win_unlock(clientRank_, windows_[1]) ;
-    }
-    
+    MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);
+ 
     if (pending)
     {
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/buffer_client.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/buffer_client.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/buffer_client.hpp	(revision 2260)
@@ -71,5 +71,5 @@
       bool hasWindows ;
 
-      double latency_=1e-2 ;
+      double latency_=0 ;
       double lastCheckedWithNothing_=0 ;
       double lastCheckedNotify_=0 ;
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/buffer_server.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/buffer_server.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/buffer_server.hpp	(revision 2260)
@@ -40,5 +40,5 @@
       bool hasWindows ;
       int windowsRank_ ;
-      double bufferFromClientLatency_=1e-1 ;
+      double bufferFromClientLatency_=0e-1 ;
       double bufferFromClientTime_ = 0;
 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/client.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/client.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/client.cpp	(revision 2260)
@@ -431,5 +431,5 @@
       double time ;
       double lastTime=0 ;
-      double latency=1e-2 ;
+      double latency=0 ;
       bool out=false ;
       while (!out)
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/context_client.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/context_client.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/context_client.cpp	(revision 2260)
@@ -118,5 +118,9 @@
     {
       list<int> ranks = event.getRanks();
-      info(100)<<"Event "<<timeLine<<" of context "<<context_->getId()<<endl ;
+ 
+//      ostringstream str ;
+//      for(auto& rank : ranks) str<<rank<<" ; " ;
+//      info(100)<<"Event "<<timeLine<<" of context "<<context_->getId()<<"  for ranks : "<<str.str()<<endl ;
+
       if (CXios::checkEventSync)
       {
@@ -165,7 +169,6 @@
 
         unlockBuffers(ranks) ;
-        info(100)<<"Event "<<timeLine<<" of context "<<context_->getId()<<"  sent"<<endl ;
-          
         checkBuffers(ranks);
+        
       }
       
@@ -346,4 +349,6 @@
       }
       buffer->attachWindows(windows_[rank]) ;
+      if (!isAttachedModeEnabled()) MPI_Barrier(winComm_[rank]) ;
+       
    }
 
@@ -525,4 +530,12 @@
   }
   
+  bool CContextClient::havePendingRequests(list<int>& ranks)
+  {
+      list<int>::iterator it;
+      bool pending = false;
+      for (it = ranks.begin(); it != ranks.end(); it++) pending |= buffers[*it]->hasPendingRequest();
+      return pending;
+  }
+
   bool CContextClient::isNotifiedFinalized(void)
   {
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/context_client.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/context_client.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/context_client.hpp	(revision 2260)
@@ -41,4 +41,5 @@
       void releaseBuffers(void);
       bool havePendingRequests(void);
+      bool havePendingRequests(list<int>& ranks) ;
 
       bool isServerLeader(void) const;
@@ -127,5 +128,5 @@
       bool isGrowableBuffer_ = true ;
 
-      double latency_=1e-2 ;
+      double latency_=0e-2 ;
   };
 }
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/context_server.cpp	(revision 2260)
@@ -166,4 +166,5 @@
         MPI_Win_create_dynamic(MPI_INFO_NULL, winComm_[rank], &windows_[rank][1]);
         CTimer::get("create Windows").suspend() ;
+        MPI_Barrier(winComm_[rank]) ;
       }
       else
@@ -302,4 +303,5 @@
         buffers[rank]->notifyBufferResizing() ;
         buffers[rank]->updateCurrentWindows() ;
+        info(100)<<"Receive NotifyChangeBufferSize from client rank "<<rank<<endl ;
       } 
       else if (timeLine==timelineEventChangeBufferSize)
@@ -310,7 +312,9 @@
         buffers.erase(rank) ;
         buffers.insert(pair<int,CServerBuffer*>(rank,new CServerBuffer(windows_[rank], winAdress, 0, newSize)));
+        info(100)<<"Receive ChangeBufferSize from client rank "<<rank<<"  newSize : "<<newSize<<" Address : "<<winAdress[0]<<" & "<<winAdress[1]<<endl ;
       }
       else
       {
+        info(100)<<"Receive standard event from client rank "<<rank<<"  with timeLine : "<<timeLine<<endl ;
         it=events.find(timeLine);
         if (it==events.end()) it=events.insert(pair<int,CEventServer*>(timeLine,new CEventServer(this))).first;
@@ -391,5 +395,5 @@
       else if (pendingRequest.empty()) getBufferFromClient(currentTimeLine) ;
     }
-    else if (pureOneSided) getBufferFromClient(currentTimeLine) ; // if pure one sided check buffer even if no event recorded at current time line
+    else if (pendingRequest.empty()) getBufferFromClient(currentTimeLine) ; // if pure one sided check buffer even if no event recorded at current time line
   }
 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/contexts_manager.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/contexts_manager.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/contexts_manager.cpp	(revision 2260)
@@ -155,4 +155,6 @@
   {
     CTimer::get("CContextsManager::eventLoop").resume();
+    int flag ;
+    MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);
     double time=MPI_Wtime() ;
     if (time-lastEventLoop_ > eventLoopLatency_) 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/contexts_manager.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/contexts_manager.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/contexts_manager.hpp	(revision 2260)
@@ -83,5 +83,5 @@
     int managerGlobalLeader_ ;
 
-    const double eventLoopLatency_=1e-2; 
+    const double eventLoopLatency_=0; 
     double lastEventLoop_=0. ;
 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/pool_ressource.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/pool_ressource.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/pool_ressource.cpp	(revision 2260)
@@ -106,4 +106,6 @@
    
     double time=MPI_Wtime() ;
+    int flag ;
+    MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);
     if (time-lastEventLoop_ > eventLoopLatency_) 
     {
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/pool_ressource.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/pool_ressource.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/pool_ressource.hpp	(revision 2260)
@@ -45,5 +45,5 @@
     bool finalizeSignal_ ;
     
-    const double eventLoopLatency_=1e-2; 
+    const double eventLoopLatency_=0; 
     double lastEventLoop_=0. ;
   };
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/ressources_manager.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/ressources_manager.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/ressources_manager.cpp	(revision 2260)
@@ -113,4 +113,6 @@
   {
     CTimer::get("CRessourcesManager::eventLoop").resume();
+    int flag ;
+    MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);
     double time=MPI_Wtime() ;
     if (time-lastEventLoop_ > eventLoopLatency_) 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/ressources_manager.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/ressources_manager.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/ressources_manager.hpp	(revision 2260)
@@ -72,5 +72,5 @@
     int freeRessourcesSize_ ;
 
-    const double eventLoopLatency_=1e-2; 
+    const double eventLoopLatency_=0; 
     double lastEventLoop_=0. ;
 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/server_context.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/server_context.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/server_context.cpp	(revision 2260)
@@ -237,5 +237,7 @@
     CTimer::get("CServerContext::eventLoop").resume();
     bool finished=false ;
-    
+    int flag ;
+    MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);
+
 //    double time=MPI_Wtime() ;
 //    if (time-lastEventLoop_ > eventLoopLatency_) 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/server_context.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/server_context.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/server_context.hpp	(revision 2260)
@@ -61,5 +61,5 @@
     bool isAttachedMode_ ;
 
-    const double eventLoopLatency_=1e-2; 
+    const double eventLoopLatency_=0; 
     double lastEventLoop_=0. ;
 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/servers_ressource.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/servers_ressource.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/servers_ressource.cpp	(revision 2260)
@@ -118,4 +118,7 @@
     CTimer::get("CServersRessource::eventLoop").resume();
     double time=MPI_Wtime() ;
+    int flag ;
+    MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);
+
     if (time-lastEventLoop_ > eventLoopLatency_) 
     {
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/servers_ressource.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/servers_ressource.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/servers_ressource.hpp	(revision 2260)
@@ -50,5 +50,5 @@
     bool finalizeSignal_ ;
 
-    const double eventLoopLatency_=1e-2; 
+    const double eventLoopLatency_=0; 
     double lastEventLoop_=0. ;
 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services.cpp	(revision 2260)
@@ -105,5 +105,7 @@
     //checkCreateContextNotification() ;
     CTimer::get("CService::eventLoop").resume();
-    
+    int flag ;
+    MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);
+   
 //    double time=MPI_Wtime() ;
 //    if (time-lastEventLoop_ > eventLoopLatency_) 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services.hpp	(revision 2260)
@@ -71,5 +71,5 @@
     int nbPartitions_ ;
 
-    const double eventLoopLatency_=1e-2; 
+    const double eventLoopLatency_=0; 
     double lastEventLoop_=0. ;
 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services_manager.cpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services_manager.cpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services_manager.cpp	(revision 2260)
@@ -109,4 +109,6 @@
   {
     CTimer::get("CServicesManager::eventLoop").resume();
+    int flag ;
+    MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);
     double time=MPI_Wtime() ;
     if (time-lastEventLoop_ > eventLoopLatency_) 
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services_manager.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services_manager.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/services_manager.hpp	(revision 2260)
@@ -60,5 +60,5 @@
     int managerGlobalLeader_ ;
 
-    const double eventLoopLatency_=1e-2; 
+    const double eventLoopLatency_=0; 
     double lastEventLoop_=0. ;
     
Index: /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/window_manager.hpp
===================================================================
--- /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/window_manager.hpp	(revision 2259)
+++ /XIOS/dev/dev_ym/XIOS_COUPLING/src/manager/window_manager.hpp	(revision 2260)
@@ -61,4 +61,6 @@
         time=MPI_Wtime() ;
         while(time-lastTime < latency_) time=MPI_Wtime() ;
+        int flag ;
+        MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);
         MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, window_) ;
         MPI_Compare_and_swap(&WINDOWS_LOCKED, &state, &lock, MPI_INT, rank, OFFSET_LOCK, window_) ;
@@ -86,4 +88,6 @@
         time=MPI_Wtime() ;
         while(time-lastTime < latency_) time=MPI_Wtime() ;
+        int flag ;
+        MPI_Iprobe(MPI_ANY_SOURCE, MPI_ANY_TAG, MPI_COMM_WORLD, &flag, MPI_STATUS_IGNORE);
         MPI_Win_lock(MPI_LOCK_EXCLUSIVE, rank, 0, window_) ;
         MPI_Compare_and_swap(&WINDOWS_LOCKED, &state, &lock, MPI_INT, rank, OFFSET_LOCK, window_) ;
