שאלה כללית על socketים.

selalerer

New member
שתי האפשרויות נראות לי... לא יפות.

היות ואני לא מתכנת תוכנית מסחרית עכשיו אני יכול להרשות לעצמי להמשיך להיאבק עם זה בכדי למצוא את Design הנכון יותר. *תשובות: 1. SIGNAL בעייתי אם יש לי שתי מופעים של המחלקה הזאת (שממתינות להתקשרויות על portים שונים למשל). 2. ליצור טעות בכוונה, זה נשמע לי לא נכון לוגית. *שאלה: 3. האם העובדה שאני משתמש בsleep בלולאה (ב design שלי) לא מונעת את הCPU usage הגבוה?
 

voguemaster

New member
KENVELO

במקום לטחון את ה-CPU יווצר לך פרופיל של ספייקים (קפיצות חדות). 1 לא בעייתית במיוחד. זה יעבוד דווקא טוב אבל אם אתה רוצה DESIGN טוב אז תחשוב שאתה רוצה להמתין ל-EVENT כלשהו גם על סוקט וגם על משהו כללי אחר. אין לך ברירה אלא לרכז את הכל עם SELECT ולאחד את ההמתנה במקום אחד. זה רק אומר שיש לך מחלקה שמקצה חיבורים, זה הכל. עכשיו, אם אתה ממש רוצה להיות מתוחכם, אתה יכול לעבוד מהצד עם UNIX DOMAIN SOCKETS כך שאם מגיע EVENT מה-GUI לדוגמא, אתה שולח פיסת מידע אל ה-UNIX SOCKET וזה משחרר את SELECT שממתינה גם עליה וגם על ה-SOCKET הרגיל.
 

selalerer

New member
זאת נשמעת אופציה יותר נחמדה....

לעשות את זה עם UNIX DOMAIN SOCKET שכל תפקידו הוא להודיע למחלקה לצאת, זה כבר נשמע יותר טוב... תודה רבה
 

galh

New member
ומה אני אמרתי?! ../images/Emo46.gif

pipe היה בתור דוגמא! שכחת את משפט המפתח: everything in unix is a file.
 

voguemaster

New member
במקרה הכינותי מראש

מחלקות SOCKET ו-SOCKET_SET עבור כל הדברים האלה. יש כרגע מימוש ב-win32 אבל הוא קל באותה מידה בלינוקס (במקור כתבתי על לינוקס עניינים כאלה אז אין בעיה
). מישהו רוצה תיעוד DOXYGEN ?
 

galh

New member
לא קיבלתי את המזכר בנושא.

מתוך man (לא יודע איזו גרסא):
The poll() systemcall was introduced in Linux 2.1.23. The poll() library call was introduced in libc 5.4.28 (and provides emulation using select if your kernel does not have a poll syscall).​
אם הקרנל נותן, לא תיקח?
 

voguemaster

New member
לפני שנה ../images/Emo6.gif

אבל אבל... במקרה התכוונתי ל-select ה-system call!! יא חתיכת מתכנת מנוון שכלית שכמוך
 

galh

New member
תגיד את זה לקומפיילר שאיכזבת!

אני אסתדר לבד.
 
למעלה