From 41e36c9a20c9ee9788ed9737b2cf6fd2ef74cce7 Mon Sep 17 00:00:00 2001
From: abid <chiheb.abid@gmail.com>
Date: Thu, 6 Jun 2019 00:23:35 +0100
Subject: [PATCH] =?UTF-8?q?=09modifi=C3=A9=C2=A0:=20=20=20=20=20=20=20=20?=
 =?UTF-8?q?=20src/ModelCheckerTh.cpp=20=09modifi=C3=A9=C2=A0:=20=20=20=20?=
 =?UTF-8?q?=20=20=20=20=20src/ModelCheckerTh.h=20=09modifi=C3=A9=C2=A0:=20?=
 =?UTF-8?q?=20=20=20=20=20=20=20=20src/main.cpp?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/ModelCheckerTh.cpp | 47 +++++++++++++++++-------------------------
 src/ModelCheckerTh.h   | 10 ++++-----
 src/main.cpp           | 21 +------------------
 3 files changed, 25 insertions(+), 53 deletions(-)

diff --git a/src/ModelCheckerTh.cpp b/src/ModelCheckerTh.cpp
index 7e76293..bcffda8 100644
--- a/src/ModelCheckerTh.cpp
+++ b/src/ModelCheckerTh.cpp
@@ -36,22 +36,14 @@ ModelCheckerTh::ModelCheckerTh(const NewNet &R, int BOUND,int nbThread)
     m_transitionName=R.transitionName;
     m_placeName=R.m_placePosName;
 
-    cout<<"Toutes les Transitions:"<<endl;
+   /* cout<<"Toutes les Transitions:"<<endl;
     map<string,int>::iterator it2=m_transitionName.begin();
     for (; it2!=m_transitionName.end(); it2++)
     {
         cout<<(*it2).first<<" : "<<(*it2).second<<endl;
-    }
-
+    }*/
 
 
-    cout<<"Transitions observables :"<<endl;
-    Set::iterator it=m_observable.begin();
-    for (; it!=m_observable.end(); it++)
-    {
-        cout<<*it<<"  ";
-    }
-    cout<<endl;
     InterfaceTrans=R.InterfaceTrans;
     m_nbPlaces=R.places.size();
     cout<<"Nombre de places : "<<m_nbPlaces<<endl;
@@ -65,10 +57,6 @@ ModelCheckerTh::ModelCheckerTh(const NewNet &R, int BOUND,int nbThread)
 
     m_initalMarking=lddmc_cube(liste_marques,R.places.size());
 
-
-
-
-
     uint32_t *prec = new uint32_t[m_nbPlaces];
     uint32_t *postc= new uint32_t [m_nbPlaces];
     // Transition relation
@@ -132,7 +120,6 @@ LDDState * ModelCheckerTh::buildInitialMetaState()
 {
     ComputeTh_Succ();
     LDDState *c=new LDDState;
-    cout<<"Initial marking : "<<m_initalMarking<<endl;
     MDD initial_meta_state=Accessible_epsilon(m_initalMarking);
     ldd_refs_push(initial_meta_state);
     c->m_lddstate=initial_meta_state;
@@ -171,11 +158,8 @@ void * ModelCheckerTh::Compute_successors()
     pthread_mutex_lock(&m_mutex);
     id_thread=m_id_thread++;
     pthread_mutex_unlock(&m_mutex);
-
     LDDState* reached_class=nullptr;
-    // size_t max_meta_state_size;
-    // int min_charge;
-    cout<<"Thread id : "<<id_thread<<endl;
+
     do
     {
         pthread_barrier_wait(&m_barrier_threads);
@@ -211,8 +195,7 @@ void * ModelCheckerTh::Compute_successors()
         }
         pthread_barrier_wait(&m_barrier_builder);
     }
-    while (1);
-
+    while (!m_finish);
 }
 
 
@@ -233,15 +216,13 @@ void ModelCheckerTh::ComputeTh_Succ()
     m_id_thread=0;
 
     pthread_mutex_init(&m_mutex, NULL);
-    pthread_mutex_init(&m_gc_mutex,NULL);
+    //pthread_mutex_init(&m_gc_mutex,NULL);
     pthread_mutex_init(&m_graph_mutex,NULL);
-    pthread_mutex_init(&m_supervise_gc_mutex,NULL);
-    m_gc=0;
+    //pthread_mutex_init(&m_supervise_gc_mutex,NULL);
+    pthread_barrier_init(&m_barrier_threads, NULL, m_nb_thread+1);
+    pthread_barrier_init(&m_barrier_builder, NULL, m_nb_thread+1);
 
-    pthread_barrier_init(&m_barrier_threads, NULL, m_nb_thread);
-    pthread_barrier_init(&m_barrier_builder, NULL, m_nb_thread);
-
-    for (int i=0; i<m_nb_thread-1; i++)
+    for (int i=0; i<m_nb_thread; i++)
     {
         if ((rc = pthread_create(&m_list_thread[i], NULL,threadHandler,this)))
         {
@@ -256,3 +237,13 @@ void ModelCheckerTh::ComputeTh_Succ()
 
 
 }
+ModelCheckerTh::~ModelCheckerTh() {
+    m_finish=true;
+    pthread_barrier_wait(&m_barrier_threads);
+    pthread_barrier_wait(&m_barrier_builder);
+    for (int i = 0; i < m_nb_thread-1; i++)
+     {
+         pthread_join(m_list_thread[i], NULL);
+     }
+     cout<<"Destructor "<<endl;
+}
diff --git a/src/ModelCheckerTh.h b/src/ModelCheckerTh.h
index e92aea8..b271d6c 100644
--- a/src/ModelCheckerTh.h
+++ b/src/ModelCheckerTh.h
@@ -8,6 +8,7 @@ class ModelCheckerTh : public CommonSOG
 {
 public:
     ModelCheckerTh(const NewNet &R, int BOUND,int nbThread);
+    ~ModelCheckerTh();
     LDDState * buildInitialMetaState();
     string getTransition(int pos);
     string getPlace(int pos);
@@ -18,17 +19,16 @@ public:
 private:
     int m_nb_thread;
     MDD m_initalMarking;
-    int m_min_charge;
     pile_t m_st[128];
-    int m_charge[128];
     int m_id_thread;
     pthread_mutex_t m_mutex;
     pthread_mutex_t m_graph_mutex;
-    pthread_mutex_t m_gc_mutex;
-    pthread_mutex_t m_supervise_gc_mutex;
+    //pthread_mutex_t m_gc_mutex;
+    //pthread_mutex_t m_supervise_gc_mutex;
 
     pthread_barrier_t m_barrier_threads,m_barrier_builder;
-    unsigned int m_gc;
+    //unsigned int m_gc;
+    bool m_finish=false;
 
     pthread_mutex_t m_mutex_stack[128];
     pthread_t m_list_thread[128];
diff --git a/src/main.cpp b/src/main.cpp
index e1b435a..9c41fdb 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -204,28 +204,8 @@ int main(int argc, char** argv)
         }
         // Initialize SOG builder
         ModelCheckerTh* mcl=new ModelCheckerTh(R,bound,nb_th);
-        cout<<"Created"<<endl;
-        /********************************************************************/
-        spot::twa_graph_ptr kk =
-                    spot::make_twa_graph(std::make_shared<SogKripkeTh>(d,mcl,R.getListTransitionAP(),R.getListPlaceAP()),
-                                         spot::twa::prop_set::all(), true);
 
 
-                cout<<"SOG translated to SPOT succeeded.."<<endl;
-                cout<<"Want to save the graph in a dot file ?";
-                cin>>c;
-                if (c=='y')
-                {
-                    fstream file;
-
-                    string st(argv[3]);
-                    st+=".dot";
-                    file.open(st.c_str(),fstream::out);
-                    spot::print_dot(file, kk,"ka");
-                    file.close();
-                }
-
-        /********************************************************************/
 
 
         auto k =
@@ -259,6 +239,7 @@ int main(int argc, char** argv)
         }
         else
             std::cout << "formula is verified\n";
+        delete mcl;
 
     }
 
-- 
GitLab