Προς το περιεχόμενο

C++ Threads


NewProject

Προτεινόμενες αναρτήσεις

Στο stackoverflow ενας λεει :

 

As a general rule of thumb, a function is re-entrant if it doesn't alter any common resources (e.g. same memory locations). If it does, you need to use some sort of synchronization mechanism like mutexes or semaphores.

 

Αυτο ισχυει για ολη τη μνημη που πιανει μια μεταβλητη η για τα bytes ξεχωριστα ;

 

Μπορουμε να εχουμε δηλαδη

 

>
...
char data[100];
...

 

Thread A :

>
void thread_a()
{  
  while(true)
     data[4] = data[0] + data[1] + data[2];
}

 

Thread B :

>
void thread_b()
{  
  while(true)
     data[8] = data[5] + data[6] + data[7];
}

 

Thread C :

>
void thread_c()
{  
  while(true)
     data[12] = data[9] + data[10] + data[11];
}

 

(να τρεχουν ταυτοχρονα και με ασφαλεια εννοειται) ;

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στο απόσπασμά σου, τα τρία νήματα γράφουν σε διαφορετικές περιοχές της μνήμης.

Επιπλέον, τα δεδομένα που χρησιμοποιεί το καθένα δεν επηρεάζονται από την εγγραφή των άλλων.

 

Άρα δεν υπάρχει data race και είναι thread-safe...

 

-

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στο απόσπασμά σου, τα τρία νήματα γράφουν σε διαφορετικές περιοχές της μνήμης.

Επιπλέον, τα δεδομένα που χρησιμοποιεί το καθένα δεν επηρεάζονται από την εγγραφή των άλλων.

 

Άρα δεν υπάρχει data race και είναι thread-safe...

 

-

 

 

ευχαριστω για την απαντηση

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...