Αν θέλεις να δεις πως δουλεύει το threading με το Win32 API, πειραματίζεσαι με λάθος εργαλεία. Αν σε ενδιαφέρει το πραγματικά stable multithreading, χρειάζεται να κάνεις πολύ περισσότερα από το να ξεκινήσεις ένα thread χωρίς να σκάσει η εφαρμογή. Θα πρέπει να λάβεις υπόψη συγχρονισμό και επικοινωνία μεταξύ thread, ομαλό termination, και όλα τα καλούδια όπως mutexes, semaphores κλπ.
Μη νομίζεις ότι επειδή ο κώδικας που δίνεις είναι γραμμένος σε VB6 είναι και πιο εύκολος στη χρήση από τη χύμα C. Από τη στιγμή που καλείς το Win32 API είσαι αναγκασμένος να χρησιμοποιείς κλήσεις και να περνάς παραμέτρους όπως με την απλή C, χωρίς καμμία διευκόλυνση από βιβλιοθήκες ή compiler, χωρίς καν τη δυνατότητα να πιάσεις όλα τα exceptions σε περίπτωση που κάτι πάει στραβά (π.χ. memory violation).
Αν θες να δεις τί υπάρχει διαθέσιμο για multithreading στο χώρο του Win32 API, μπορείς φυσικά να κοιτάξεις τις βιβλιοθήκες της Visual C++ αλλά και την
boost::thread, η οποία επιτρέπει την εκτέλεση και διαχείριση thread με ψιλο-στανταρ και σταθερό τρόπο.
Επίσης, θα πρέπει να δεις την υποστήριξη για OpenMP που έχει η Visual C++ και επιτρέπει την παράλληλη εκτέλεση κώδικα σε πολλούς επεξεργαστές. Είναι κάτι που είναι σχεδόν αδύνατο να πετύχεις καλώντας το Win32 API μέσω VB6
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos