לדלג לתוכן

Concurrency (מדעי המחשב)

מתוך ויקיפדיה, האנציקלופדיה החופשית
בעיית הפילוסופים הסועדים, בעיה קלאסית הכרוכה במקביליות ומשאבים משותפים

במדעי המחשב, concurrency (על פי האקדמיה ללשון העברית: בו־זמניות) היא היכולת של חלקים או יחידות שונות של תוכנית, אלגוריתם או בעיה להתבצע בסדר אקראי או בחלקי, מבלי להשפיע על התוצאה. רעיון זה מאפשר ביצוע של מספר פעולות מקביל, וכך לאפשר שיפור משמעותי במהירות הכוללת של ביצוע הפעולות במערכות מרובות מעבדים (multiprocessor) ומרובות ליבות מחשב. במונחים טכניים יותר, concurrency מתייחסת לפירוק של תוכנית, אלגוריתם או בעיה לרכיבים או יחידות חישוב שאינן תלויות בסדר או בסדר חלקי.[1]

לפי רוב פייק (אנ'), מקביליות היא ההרכבה של ביצוע חישובים שונים כאשר כל חישוב הוא עצמאי ולא תלוי באחרים.[2] Concurrency אינה כוללת בהכרח מקבילוּת (parallelism): cuncurrency היא התמודדות עם הרבה דברים בבת אחת לעומת מקבילות שהיא עשיית הרבה דברים בבת אחת. Concurrency היא אסטרטגיה להתמודדות, לעומת מקבילות שהיא קונספט הנוגע לביצוע. Concurrency מספקת דרך לבנות פתרון לבעיה שעשויה (אך לא בהכרח) להיות ניתנת לפתרון בעזרת חישוב מקבילי.[3]

פותחו מספר מודלים מתמטיים לחישוב Concurrency כללי. ביניהם רשתות פטרי, חישובי תהליך (Process calculus), מכונת גישה אקראית מקבילה (Parallel RAM), מודל השחקן (Actor model) ושפת התיאום של ריאו (Reo Coordination Language).

קישורים חיצוניים

[עריכת קוד מקור | עריכה]
ויקישיתוף מדיה וקבצים בנושא Concurrency בוויקישיתוף

הערות שוליים

[עריכת קוד מקור | עריכה]
  1. ^ Lamport, Leslie (ביולי 1978). "Time, Clocks, and the Ordering of Events in a Distributed System" (PDF). Communications of the ACM. 21 (7): 558–565. doi:10.1145/359545.359563. נבדק ב-4 בפברואר 2016. {{cite journal}}: (עזרה)
  2. ^ "Go Concurrency Patterns". talks.golang.org. נבדק ב-2021-04-08.
  3. ^ "Concurrency is not Parallelism". talks.golang.org. נבדק ב-2021-04-08.