Προς το περιεχόμενο
  • 0
S CoDeR

Thread programming

Ερώτηση

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

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

ευχαριστω..

Επεξ/σία από S CoDeR

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

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

 

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

 

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

 

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

 

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

 

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

  • Like 7

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

Sent from my 7 Trophy

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

 

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

 

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

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

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

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

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

 

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

 

 

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

 

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

 

 

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

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

  • Like 2

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

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

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες
  • 0

...

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

...

Δεν χρειαζεσαι νηματα ντε και καλα για αυτά, αλλά με νήματα σκέφτεσαι πιο λογικά σε αυτή την περίπτωση :)

 

@manic

Πολύ σωστά αυτά που εγραψες.Να προσθέσω οτι συνήθως διαλέγουμε να δημιουργήσουμε νέα νήματα αντί για διεργασίες,γιατί η εναλλαγη νημάτων είναι πιο γρήγορη.Επειδή κάθε φορά που γίνεται εναλλαγη(διεργασίας) πρέπει να γεμίσουμε το page table με το address space της νέας διεργασίας, χάνουμε αρκετούς κύκλους μηχανής προτου τρέξει η επόμενη εντολή.Άσε που χάνονται και οι μεταφράσεις στην TLB και η πρόσβαση στη μνήμη γίνεται αργή...

  • Like 1

Κοινοποιήστε αυτήν την ανάρτηση


Σύνδεσμος στην ανάρτηση
Κοινοποίηση σε άλλες σελίδες

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

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

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

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

Εγγραφείτε για έναν νέο λογαριασμό

Σύνδεση

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

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

Χρήσιμες πληροφορίες

Με την περιήγησή σας στο insomnia.gr, αποδέχεστε τη χρήση cookies που ενισχύουν σημαντικά την εμπειρία χρήσης.