<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>&#8235;תגובות לפוסט: &#34;תור מקבילי &#8211; Concurrent Queue&#34;&#8236;</title>
	<atom:link href="http://heblog.ronklein.co.il/2009/06/concurrent-queue/feed/" rel="self" type="application/rss+xml" />
	<link>http://heblog.ronklein.co.il/2009/06/concurrent-queue/</link>
	<description>&#8235;הבלוג של רון קליין: תכנות, OOP, טכנולוגיה, Design Patterns, log4net ועוד עניינים&#8236;</description> 	<lastBuildDate>Wed, 01 Sep 2010 12:03:59 -0700</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
	<item>
		<title>&#8235;מאת: Liran&#8236;</title>
		<link>http://heblog.ronklein.co.il/2009/06/concurrent-queue/comment-page-1/#comment-2293</link>
		<dc:creator>&#8235;Liran&#8236;</dc:creator>		<pubDate>Sat, 16 Jan 2010 15:07:34 +0000</pubDate>
		<guid isPermaLink="false">http://www.ronklein.co.il/qwe/?p=4#comment-2293</guid>
		<description>&#8235;בתרחישים מהסוג הזה לא בהכרח חייבים להשתמש בתור סטנדרטי, אלא במקום זה אפשר גם לבדוק מימושים אלטרנטיבים שפותרים את בעיית ה-single producer/consumer בצורה יעילה יותר. למשל: http://www.bluebytesoftware.com/blog/2009/10/05/FastSynchronizationBetweenASingleProducerAndSingleConsumer.aspx

בפוסט יש אנלוגיה די מבלבלת לשימוש במבנה הנתונים &quot;תור&quot; (שמירת נתונים במבנה FIFO), לבין הבטחת סדר נעילות של ת&#039;רדים על אובייקט מסויים. בהקשר של fairness, לדעתי דוגמה טובה יותר תהיה ההבדל בין מימוש SpinLock &quot;רגיל&quot; לצד מימוש של Queue Lock כלשהו, למשל MCS Lock (הראשון גורם לכך שברגע שהנעילה משתחררת כל הת&#039;רדים &quot;נלחמים&quot; על תפיסת הנעילה, בעוד שהשני דואג לכך שרק ת&#039;רד מסויים יזכה לראות שהנעילה השתחררה והוא בוודאות יהיה זה שיזכה לבצע את הנעילה)&#8236;</description> 		<content:encoded><![CDATA[<div style='direction: rtl;'>
<p>בתרחישים מהסוג הזה לא בהכרח חייבים להשתמש בתור סטנדרטי, אלא במקום זה אפשר גם לבדוק מימושים אלטרנטיבים שפותרים את בעיית ה-single producer/consumer בצורה יעילה יותר. למשל: <a href="http://www.bluebytesoftware.com/blog/2009/10/05/FastSynchronizationBetweenASingleProducerAndSingleConsumer.aspx" rel="nofollow">http://www.bluebytesoftware.com/blog/2009/10/05/FastSynchronizationBetweenASingleProducerAndSingleConsumer.aspx</a></p>
<p>בפוסט יש אנלוגיה די מבלבלת לשימוש במבנה הנתונים &quot;תור&quot; (שמירת נתונים במבנה FIFO), לבין הבטחת סדר נעילות של ת'רדים על אובייקט מסויים. בהקשר של fairness, לדעתי דוגמה טובה יותר תהיה ההבדל בין מימוש SpinLock &quot;רגיל&quot; לצד מימוש של Queue Lock כלשהו, למשל MCS Lock (הראשון גורם לכך שברגע שהנעילה משתחררת כל הת'רדים &quot;נלחמים&quot; על תפיסת הנעילה, בעוד שהשני דואג לכך שרק ת'רד מסויים יזכה לראות שהנעילה השתחררה והוא בוודאות יהיה זה שיזכה לבצע את הנעילה)</p>
</div>
]]></content:encoded>
	</item>
	<item>
		<title>&#8235;מאת: רון קליין&#8236;</title>
		<link>http://heblog.ronklein.co.il/2009/06/concurrent-queue/comment-page-1/#comment-3</link>
		<dc:creator>&#8235;רון קליין&#8236;</dc:creator>		<pubDate>Sun, 09 Aug 2009 04:05:04 +0000</pubDate>
		<guid isPermaLink="false">http://www.ronklein.co.il/qwe/?p=4#comment-3</guid>
		<description>&#8235;לירן, התרחיש המקורי הוא UDP Server שמאזין לפורט מסויים (וזה יכול להיות גם TCP), שמקבל הרבה בקשות. רציתי לקבל את הבקשה בזמן קצר ככל האפשר (כדי לחזור ולהאזין לבקשה הבאה), ולטפל בבקשות לפי סדר ההגעה שלהן. נכון, אין לי שליטה על סדר ההגעה, אבל רציתי שסדר הטיפול בבקשות ישקף (ככל האפשר) את סדר ההגעה.&#8236;</description> 		<content:encoded><![CDATA[<div style='direction: rtl;'>
<p>לירן, התרחיש המקורי הוא UDP Server שמאזין לפורט מסויים (וזה יכול להיות גם TCP), שמקבל הרבה בקשות. רציתי לקבל את הבקשה בזמן קצר ככל האפשר (כדי לחזור ולהאזין לבקשה הבאה), ולטפל בבקשות לפי סדר ההגעה שלהן. נכון, אין לי שליטה על סדר ההגעה, אבל רציתי שסדר הטיפול בבקשות ישקף (ככל האפשר) את סדר ההגעה.</p>
</div>
]]></content:encoded>
	</item>
	<item>
		<title>&#8235;מאת: Liran Chen&#8236;</title>
		<link>http://heblog.ronklein.co.il/2009/06/concurrent-queue/comment-page-1/#comment-2</link>
		<dc:creator>&#8235;Liran Chen&#8236;</dc:creator>		<pubDate>Thu, 06 Aug 2009 19:12:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.ronklein.co.il/qwe/?p=4#comment-2</guid>
		<description>&#8235;הבעיה שאתה מתאר לא בלעדית ל-lock&#039;ים. אותו דבר יכול לקרות למשל כשאתה עובד עם wait handle&#039;ים למשל. הבעיה התיאורתית, היא שנניח ויש לך autoResetEvent ות&#039;רד שמחכה לקבל עליו signal. אבל יתכן שבכל פעם שעושים set ל-event יגיע ת&#039;רד אחר &quot;שיגנוב&quot; לו את ה-signal ויגרום ל-reset של ה-event. כך שאותו ת&#039;רד שחיכה כל הזמן אף פעם לא מצליח לקבל signal

בפועל, אין באמת משמעות לזה שכן שומרים על הסדר/לא שומרים על הסדר. כי אחרי הכל, ברגע שאתה עובד מול מספרים ת&#039;רדים, אז בין כה וכה סדר העבודה/הגעה לא מובטח, והניסיון להבטיח סדרים יכול להיות מיותר מעצם זה שאף אחד לא מבטיח לך שום דבר לגבי חלוקת הזמן בין הת&#039;רדים השונים, כך שאין מה להסתמך/לבנות על זה, הרי אין לנו שליטה על זה בכל מקרה&#8236;</description> 		<content:encoded><![CDATA[<div style='direction: rtl;'>
<p>הבעיה שאתה מתאר לא בלעדית ל-lock'ים. אותו דבר יכול לקרות למשל כשאתה עובד עם wait handle'ים למשל. הבעיה התיאורתית, היא שנניח ויש לך autoResetEvent ות'רד שמחכה לקבל עליו signal. אבל יתכן שבכל פעם שעושים set ל-event יגיע ת'רד אחר &quot;שיגנוב&quot; לו את ה-signal ויגרום ל-reset של ה-event. כך שאותו ת'רד שחיכה כל הזמן אף פעם לא מצליח לקבל signal</p>
<p>בפועל, אין באמת משמעות לזה שכן שומרים על הסדר/לא שומרים על הסדר. כי אחרי הכל, ברגע שאתה עובד מול מספרים ת'רדים, אז בין כה וכה סדר העבודה/הגעה לא מובטח, והניסיון להבטיח סדרים יכול להיות מיותר מעצם זה שאף אחד לא מבטיח לך שום דבר לגבי חלוקת הזמן בין הת'רדים השונים, כך שאין מה להסתמך/לבנות על זה, הרי אין לנו שליטה על זה בכל מקרה</p>
</div>
]]></content:encoded>
	</item>
</channel>
</rss>
