nucleus Ιούνιος 7, 2012 #21 Κοινοποίηση Ιούνιος 7, 2012 Don't do it Φαίδων. Καλύτερα το κάθε thread να γράφει σε δικό του αρχείο και να το κάνεις merge μετά αφού ολοκληρώσουν την εκτέλεση τους.Μην ξεχνάς τα αρχεία έχουν και θέση που γράφεις που δυσκολεύει τα πράγματα με την χρονοδρομολόγηση των threads (έχουν χρονοδρομολόγηση τα threads ή μόνο οι διεργασίες? που έβαλα τισ σημειώσεις της παράλληλης επεξεργασίας ) Link to comment Share on other sites More sharing options...
Thodoris21 Ιούνιος 7, 2012 Author #22 Κοινοποίηση Ιούνιος 7, 2012 Ε δεν γινεται αλλιως! Link to comment Share on other sites More sharing options...
Jaco Ιούνιος 8, 2012 #23 Κοινοποίηση Ιούνιος 8, 2012 Για να φτιάξεις logger σε multithreaded εφαρμογή, υπάρχουν δυο τρόποι...1. Έχεις μια function/object που όποιος την τρέχει κρατάει κρατάει το κλειδί της πόρτας (με mutexes) και το αφήνει μόλις τελειώσει... Δηλαδή κάνεις serialization σε μια ασύγχρονη διαδικασία, το οποίο είναι από την μια πολύ εύκολο αλλά από την άλλη εισάγει χρόνους αναμονής στα threads2. Φτιάχνεις ένα object το οποίο μόνο αυτό έχει το δικαίωμα να γράψει στο log και όλοι οι άλλοι απλά κάνουν requests στο object να προσθέσει νέες καταχωρήσεις, στην λίστα που έχει να γράψει στο log... Αυτό γίνεται είτε κάνοντας allocation νέα μνήμη κάθε φορά με κάποιο index και id (ώστε να έχει συνέχεια το log και οι καταχωρήσεις να γίνονται πράγματι με χρονική σειρά), είτε αν ξέρεις εκ των προτέρων το πως θα εξελιχθεί η χρήση του log, τότε για ευκολία κάνεις pre-allocation στην μνήμη... Αυτός είναι ο καλύτερος τρόπος όσων αφορά την ταχύτητα, αλλά πολύ πιο δύσκολος στην υλοποίηση γιατί θα πρέπει να φτιάξεις κάποιους δικούς σου headers σε κάθε request που να μπορούν να ταξινομούν τις καταχωρήσεις, να κρατάνε την σωστή σειρά και να έχουν timeouts για σπασμένα requests ώστε να μην καθυστερούν τον logger... Link to comment Share on other sites More sharing options...
Inglor Ιούνιος 12, 2012 #24 Κοινοποίηση Ιούνιος 12, 2012 Φαντάζομαι θες να το υλοποιήσεις και όχι να πάρεις κάτι έτοιμο ε? Μπορείς να χρησιμοποιήσεις C++ libraries? Link to comment Share on other sites More sharing options...
Thodoris21 Ιούνιος 12, 2012 Author #25 Κοινοποίηση Ιούνιος 12, 2012 Ναι πρέπει να το υλοποιήσω! Link to comment Share on other sites More sharing options...
Inglor Ιούνιος 12, 2012 #26 Κοινοποίηση Ιούνιος 12, 2012 OK τότε και εγώ κάτι σε αυτό που περιέγραψε ο Jaco θα έκανα. Ένα object που θα δέχεται requests και μόνο αυτό έχει το δικαίωμα να γράφει στο αρχείο. Με αυτό τον τρόπο νομίζω λειτουργεί και ο Logger στην Java. Link to comment Share on other sites More sharing options...
nucleus Ιούνιος 12, 2012 #27 Κοινοποίηση Ιούνιος 12, 2012 Όταν και αν το κάνεις με το object δεν ποστάρεις και τον κώδικα είμαι περίεργος να δω πως θα βγει.Το object θα έχει "buffer" ή "queue" για τα request εγγραφής στο αρχείο ή όχι? Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.