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

Thread programming


S CoDeR

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

Δημοσ. (επεξεργασμένο)

ναι....το εχω googlare απειρες φορες.......και δεν καταλαβα...για αυτο ρωτησα...ξερει κανεις να μου απαντησει??

ευχαριστω..

Επεξ/σία από S CoDeR
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Ας πουμε οτι εχουμε αυτο το προγραματακι

post-216584-0-11652100-1361135566_thumb.jpg

 

Ας πουμε οτι το λειτουργικο για να εκτελεσει το παραπανω θελει να "δεσεις" αυτες τις "εντολες" σε μια κλωστη,

 

post-216584-0-98682300-1361136230_thumb.png

 

 ετσι ωστε οταν τραβαει τη κλωστη, να εκτελει την καθε "εντολη" που ειναι δεμενη πανω στην κλωστη.

 

post-216584-0-98311800-1361136503_thumb.png

 

Αυτο ειναι ενα thread/κλωστη/νημα. 

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

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

και ας πουμε οτι το λειτουγικο τραβαει τις "κλωστες" επιτιχαινει την ταυτοχρονη εκτελεση των  εντολων η ειναι κατι αλλο ? ???

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

Ωραια, βλεπω το επιασες. Το ενα νημα δεν μπορει να εκτελεσει ταυτοχρονα καποια πραγματα. Αν εχεις δυο νηματα; Προσεξε, καθε προγραμμα εχει και ενα νημα. Αν δεν εχει νημα, τοτε δεν μπορει να τρεξει. Οταν λενε thread programmign εννοουν οτι ενα προγραμμα εχει 2 και βαλε νηματα

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

Αναλογα με την εφαρμογη μπορεις να σπασεις το προγραμμα σου σε 2,3,4... νηματα και να το κανεις παραλληλα. Αναλογα τον επεργαστη σου και το προβλημα σου.

Sent from my 7 Trophy

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

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

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

Πολύ χονδρικά, οι εντολές σε 2+ νήματα εκτελούνται "παράλληλα". Το πόσο παράλληλα εξαρτάται απο τη δομή του επεξεργαστή σου.

Τα νήματα φυσικά μπορούν να χρησιμοποιούν τους ίδιους πόρους, μνήμη, βάση δεδομένων, sockets κτλ.Όπως ένα σοβαρό θέμα είναι τελικά με ποιά σειρά εκτελείται το κάθε νήμα, πως αυτό το διαχειρίζεσαι και πως θα διαχειριστείς τη χρήση κοινών πόρων.

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

Ενα προγραμμα (πχ Firefox) για να λειτουργησει "σηκωνει" καποιες διεργασιες (processes) η καθε διεργασια εχει δικο της address space και εχει εναν συγγεκριμενο σκοπο.

 

Αυτη η διεργασια μπορει με την σειρα της να "σηκωσει" καποια νηματα (δες τα σαν πιο lite διεργασιες) αυτα νηματα οπως και η διεργασια εχουν καποιο σκοπο υπαρξης, επισης εχουν κοινο address space (δλδ νηματα μιας διεργασιες εχουν κοινη προσβαση στις μεταβλητες της διεργασιας ΠΟΥ ΤΑ ΣΗΚΩΣΕ)

 

Γιατι τωρα κανω αυτη την δουλεια??

Σκοπος ειναι η γρηγορη εκτελεση του προγραμματος (αυτο που λεμε οτι γινεται "παραλληλα")

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

Παράλληλος προγραμματισμός είναι ο όρος που ψάχνεις (multithreading/parallel programming) ο οποίος βασίζεται σε ΠΑΡΑΛΛΗΛΟΥΣ αλγόριθμους οι οποίοι με την σειρά τους δεν έχουν καμία σχέση με τους κοινούς γνωστούς ΣΕΙΡΙΑΚΟΥΣ αλγόριθμους.

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

καλησπερα παιδια

μπορει καπιος να μου εξηγησει τι ειναι και πως λειτουργει ενα thread και γενικοτερα το thread programming??

ευχαριστω πολυ .....

Όταν θες να κάνεις πολλά πράγματα μαζί παράλληλα, χρησιμοποιείς threading.

 

π.χ έχεις μία υπηρεσία που διαβάζει το status μιας συσκευής, ενώ παράλληλα παρακολουθεί μία TCP port για κλήση που θα επιστρέψει το status της συσκευής για αυτή την κλήση, ενώ παράλληλα περιμένει την επόμενη κλήση για να γράψει ίσως κάτι στην συσκευή.

 

 

Ή θες να τραβήξεις 13 φωτογραφίες από 13 κάμερες την ίδια στιγμή, για ένα συμβάν που έγινε trigger στον χώρο που κοιτάνε οι διάφοροι (πες 20) αισθητήρες, οι οποίοι τρέχουν παράλληλα από το ίδιο πρόγραμμα.

 

Αν και σε κάτι τέτοιο, μάλλον η χρήση DSS (Decentralized Software Services) και CCR (Concurrency and Coordination Runtime) είναι πιο λογική.

 

 

Ένα καλό παράδειγμα για αρχάριους, είναι να κατανοήθεί το πως δουλεύει ο backgroundoworker στο .NET framework.

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

Ένα πιο πρακτικό παράδειγμα είναι ας πούμε να έχεις έναν application/web server και να εξυπηρετείς πολλούς users ταυτόχρονα. Η διεργασία που τρέχει ο server είναι μία. Αλλά για κάθε νέο χρήστη που συνδέεται ανοίγει ένα νέο νήμα (για την ακρίβεια χρησιμοποιεί Thread pool ok) για να τον εξυπηρετήσει. Αλλιώς έπρεπε να εξυπηρετεί τον καθένα σειριακά.

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

Παράλληλος προγραμματισμός είναι ο όρος που ψάχνεις (multithreading/parallel programming) ο οποίος βασίζεται σε ΠΑΡΑΛΛΗΛΟΥΣ αλγόριθμους οι οποίοι με την σειρά τους δεν έχουν καμία σχέση με τους κοινούς γνωστούς ΣΕΙΡΙΑΚΟΥΣ αλγόριθμους.

Αλλο πραγμα το parallel και αλλο το multithreading

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

O Multithreaded programming είναι και Parallel programming το ανάποδο δεν είναι απαραιτήτως ίδιο. δηλαδή ο παράλληλος προγραμματισμός περικλύει και τον Multithreaded, υπάρχουν σίγουρα κάποιες διαφορές αλλά εαν εμβαθύνουμε σε αυτά θα χάσει το παιδί την μπάλα οπότε καλύτερα να αναζητήσει αυτούς τους όρους

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

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

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

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

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

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

Σύνδεση

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

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