בעיית יצרן-צרכן

במדעי המחשב, בעיית יצרן צרכן (באנגלית: Producer/Consumer problem) היא דוגמה קלאסית לתיאור בעיית סינכרון בין שני תהליכים או יותר הנגרמת במערכות המאפשרות ריבוי משימות.

הבעיה נגרמת כאשר שני תהליכים או יותר חולקים חוצץ המוגבל בגודלו. חלק מהתהליכים אחראים להכניס מידע לחוצץ (יצרנים) וחלק אחראים לשלוף ממנו מידע (צרכנים). 

פתרון הבעיה דורש מנגנון שימנע משני תהליכים לעדכן בו-זמנית את אותה רשומה, בעזרת שימוש בסנכרון בין התהליכים.

פתרון לא מספק יגרום בחלק מהמקרים למצב של קיפאון, כאשר שני התהליכים "ישנים" וממתינים ש"יעירו" אותם.

פתרון אפשרי לבעיה מתבצע באמצעות סמפורים או מוניטורים. כאשר יש יותר מיצרן אחד וצרכן אחד, יש להשתמש גם במנעול.

ראו גם
 סמפור (מדעי המחשב)
 בעיית הפילוסופים הסועדים
 בעיית שני הצבאות

תכנות