This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
|
java:synchronization [2017/03/19 18:24] gthanos [Παράδειγμα ασάφειας στις τιμές μεταβλητών παράλληλα εκτελούμενων νημάτων] |
java:synchronization [2017/03/19 18:33] gthanos [Παράδειγμα ασάφειας στις τιμές διαμοιραζόμενων μεταβλητών παράλληλα εκτελούμενων νημάτων] |
||
|---|---|---|---|
| Line 5: | Line 5: | ||
| ===== Παράδειγμα ασάφειας στις τιμές διαμοιραζόμενων μεταβλητών παράλληλα εκτελούμενων νημάτων ===== | ===== Παράδειγμα ασάφειας στις τιμές διαμοιραζόμενων μεταβλητών παράλληλα εκτελούμενων νημάτων ===== | ||
| - | Στο παρακάτω παράδειγμα κώδικα ας υποθέσουμε ότι ένα αντικείμενο της κλάσης Counter διαμοιράζεται μεταξύ δύο νημάτων. Η ασάφεια ως προς τις τιμές μίας μεταβλητής παρουσιάζεται όταν δύο νήματα προσπαθούν ταυτόχρονα να μεταβάλλουν την τιμή | + | Στο παρακάτω παράδειγμα κώδικα ας υποθέσουμε ότι ένα αντικείμενο της κλάσης Counter διαμοιράζεται μεταξύ δύο νημάτων. Η ασάφεια ως προς τις τιμές μίας μεταβλητής παρουσιάζεται όταν δύο νήματα προσπαθούν ταυτόχρονα να μεταβάλλουν την τιμή |
| <code java Counter.java> | <code java Counter.java> | ||
| Line 39: | Line 39: | ||
| - το νήμα B αποθηκεύει την τιμή της c | - το νήμα B αποθηκεύει την τιμή της c | ||
| - | Μετά από το παραπάνω σενάριο η τιμή της c θα έπρεπε να παραμένει και πάλι μηδέν καθώς το ένα νήμα την αύξησε και το άλλο την μείωσε. Αντί για αυτό η τιμή της c είναι -1 καθώς η μεταβολή από το νήμα Α στην πράξη δεν έγινε. Για να ήταν | + | Μετά από το παραπάνω σενάριο η τιμή της c θα έπρεπε να παραμένει και πάλι μηδέν καθώς το ένα νήμα την αύξησε και το άλλο την μείωσε. Αντί για αυτό η τιμή της c είναι -1 καθώς η μεταβολή από το νήμα Α στην πράξη δεν έγινε. Για να μεταβληθεί σωστά η τιμή της c η παραπάνω ακολουθία θα έπρεπε να είναι η εξής |
| - το νήμα Α λαμβάνει την τιμή της c | - το νήμα Α λαμβάνει την τιμή της c | ||
| - το νήμα Α αυξάνει την τιμή της c κατά 1 | - το νήμα Α αυξάνει την τιμή της c κατά 1 | ||