שתי שיטות לעבוד מקבילית בלינוקס
השיטה הראשונה היא השיטה היוניקסית המקובלת - כלומר לעבוד עם פרוססים שונים ובעזרת IPC לתקשר ביניהם (shared memory, numbered semaphores etc..) השיטה השניה היא לעבוד עם סטנדרט די חדש (חדש = כמה שנים
) שנקרא POSIX THREADS. אתה צריך אימפלמנטציה של POSIX THREADS ובלינוקס האימפלמנטציה הכי נפוצה היא LinuxThreads, שלמעשה (הפלא ופלא!) מגיעה כבר בתוך ה-glibc שלך. כלומר, ישנם THREADS בלינוקס (למרות שבאופן פנימי הספריה מנהלת אותם בתור פרוססים אבל לך זה לא משנה..). כמה דברים: קובץ ה-HEADER נקרא pthread.h בזמן קישור (כשמחברים את כל קובצי ה-O לקובץ שניתן להרצה) צריך להוסיף הפניה לספריה בצורה הבאה, ותמיד רצוי להוסיף הגדרה של REENTRANCY, לדוגמא:
gcc -g -D_REENTRANT -o <exe_file> file1.o file2.o ... -lpthread
עוד דבר חשוב לזכור הוא להגיד לקומפיילר לעבוד עם הספריות הבטוחות לשימוש ע"י כמה THREADS (מה שנקרא MT SAFE) ע"י הוספת השורה הבאה לפני
כל ה-INCLUDES שלך:
#define _REENTRANT
ועכשיו לעניין האמיתי, הפונקציות: pthread_create - יצירת THREAD חדש (ראה MAN PAGE) pthread_mutex_lock - נעילת MUTEX. pthread_mutex_unlock - די ברור מאליו... pthread_detach - גורם לכך שלא תצטרך לחכות לבן. ועוד ועוד.. אני ממליץ בחום לבדוק את ה-MAN PAGES, ושאלות אפשר תמיד להפנות ל-comp.programming.threads (ממליץ על GOOGLE GROUPS). תהנה