NewProject Δημοσ. 8 Νοεμβρίου 2011 Δημοσ. 8 Νοεμβρίου 2011 Στο 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]; } (να τρεχουν ταυτοχρονα και με ασφαλεια εννοειται) ;
V.I.Smirnov Δημοσ. 8 Νοεμβρίου 2011 Δημοσ. 8 Νοεμβρίου 2011 Στο απόσπασμά σου, τα τρία νήματα γράφουν σε διαφορετικές περιοχές της μνήμης. Επιπλέον, τα δεδομένα που χρησιμοποιεί το καθένα δεν επηρεάζονται από την εγγραφή των άλλων. Άρα δεν υπάρχει data race και είναι thread-safe... -
NewProject Δημοσ. 8 Νοεμβρίου 2011 Μέλος Δημοσ. 8 Νοεμβρίου 2011 Στο απόσπασμά σου, τα τρία νήματα γράφουν σε διαφορετικές περιοχές της μνήμης. Επιπλέον, τα δεδομένα που χρησιμοποιεί το καθένα δεν επηρεάζονται από την εγγραφή των άλλων. Άρα δεν υπάρχει data race και είναι thread-safe... - ευχαριστω για την απαντηση
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα