Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Inter Thread communication

Îåêßíçóå áðü ôï ìÝëïò Δημήτρης Γκανάτσιος. Τελευταία δημοσίευση από το μέλος objectref στις 23-11-2005, 14:41. Υπάρχουν 1 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  23-11-2005, 12:32 7260

    Inter Thread communication

    Γεια χαρά
    Θα μπορούσε κάποιος να μου εξηγήσει και να με διαφωτίσει σε διάφορα πράγματα σχετικά με threads

    1. Μπορεί ένα thread να κάνει trigger ένα event ενός άλλου thread (συγκεκριμένα εκείνου που το κάλεσε);
    2. Μπορεί ένα thread να δώσει ή να πάρει τιμή σε ένα property/variable ενός άλλου thread;
    3. Πώς μπορώ να μεταφέρω objects μεταξύ threads (κοινώς, ένα thread να χρησιμοποιεί ένα object που δημιουργήθηκε/επεξεργάστηκε από ένα άλλο thread);
    4. Τι είναι το thread pool;

    Σας ευχαριστώ πολύ

    Dimitris-Ilias Gkanatsios
    Developer Evangelist, Microsoft Hellas

    My Blog
    StudentGuru
    Twitter
    Facebook
  •  23-11-2005, 14:41 7265 σε απάντηση της 7260

    Απ: Inter Thread communication

    Σε γενικες γραμμες (και λιγο βιαστικα Sad [:(]):

    1, 2, 3: Υπαρχει τροπος να εχεις επικοινωνια μεταξυ των threads χρησιμοποιωντας delegates τα οποια ειναι κατι σαν τα function pointers της C. Δες στο Help για την Invoke και την BeginInvoke οι οποιες επιτρεπουν synchronous η asynchronous εκτελεση ενος delegate στο thread που σ'ενδιαφερει.

    Επισης, για να αλλαζεις και τιμες θα χρειαστει να κανεις και καποιου ειδους lock σε shared variables. Σχετικα με αυτα μπορεις να δεις το keyword lock οπως και την κλαση Monitor.

    4. Επειδη το να κανεις create και destroy threads ειναι αρκετα costly, το Net Framework παρεχει ενα pool, (μια συλλογη δηλ.) απο "ετοιμα" threads τα οποια μπορουν να κανουν τη δουλεια που θελεις και μετα πεφτουν σε sleep mode.
    Ετσι εχεις πολυ μικροτερο overhead μιας που αποφευγεις το create/destroy. Στην εκδοση 2 του Framework μπορεις να ορισεις εσυ ποσα threads θα εχει το threadpool αλλα πρεπει να προσεχεις γιατι αν πεις στο pool να εξυπηρετησει περισσοτερα requests απ'οτι το ιδιο μπορει (απ'οσα threads δηλ. εχει), τα επιπλεον requests θα περιμενουν μεχρι να ελευθερωθει καποιο thread απο το pool.
    Software Engineer, specializes in Microsoft .net/C#, COM, Sql Server and now Python.
Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems