<?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;try, catch, write&#34;&#8236;</title>
	<atom:link href="http://heblog.ronklein.co.il/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://heblog.ronklein.co.il</link>
	<description>&#8235;הבלוג של רון קליין, תכנות, OOP ועוד עניינים&#8236;</description> 	<lastBuildDate>Tue, 09 Mar 2010 21:33:21 -0700</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>&#8235;תגובה לפוסט: &#34;log4net &#8211; המדריך למלגלג (חלק 3 &#8211; למצוא viewer נורמלי)&#34;  מאת &#34;יעל&#34;&#8236;</title>
		<link>http://heblog.ronklein.co.il/2009/12/log4net-part3/comment-page-1/#comment-2304</link>
		<dc:creator>&#8235;יעל&#8236;</dc:creator>		<pubDate>Tue, 09 Mar 2010 21:33:21 +0000</pubDate>
		<guid isPermaLink="false">http://heblog.ronklein.co.il/?p=99#comment-2304</guid>
		<description>&#8235;איך למען ה&#039; אני פותחת את הקובץ לוג שנוצר לי????&#8236;</description> 		<content:encoded><![CDATA[<div style='direction: rtl;'>
<p>איך למען ה' אני פותחת את הקובץ לוג שנוצר לי????</p>
</div>
]]></content:encoded>
	</item>
	<item>
		<title>&#8235;תגובה לפוסט: &#34;תור מקבילי &#8211; Concurrent Queue&#34;  מאת &#34;Liran&#34;&#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;תגובה לפוסט: &#34;From lock to abstract locker&#34;  מאת &#34;רון קליין&#34;&#8236;</title>
		<link>http://heblog.ronklein.co.il/2010/01/from-lock-to-abstract-locker/comment-page-1/#comment-2292</link>
		<dc:creator>&#8235;רון קליין&#8236;</dc:creator>		<pubDate>Wed, 06 Jan 2010 21:18:27 +0000</pubDate>
		<guid isPermaLink="false">http://heblog.ronklein.co.il/?p=214#comment-2292</guid>
		<description>&#8235;&lt;a href=&quot;#comment-2291&quot; rel=&quot;nofollow&quot;&gt;@לירן&lt;/a&gt;, אני מסכים איתך שהאבסטרקציה כאן מורידה במשהו מהקריאות של הקוד.
למעשה אני חושב כבר על הפוסט שיסביר את הרעיון של נעילה באמצעות decorator, שזה נראה לי כרגע פתרון קצת יותר אלגנטי.
צ&#039;ירס!&#8236;</description> 		<content:encoded><![CDATA[<div style='direction: rtl;'>
<p><a href="#comment-2291" rel="nofollow">@לירן</a>, אני מסכים איתך שהאבסטרקציה כאן מורידה במשהו מהקריאות של הקוד.<br />
למעשה אני חושב כבר על הפוסט שיסביר את הרעיון של נעילה באמצעות decorator, שזה נראה לי כרגע פתרון קצת יותר אלגנטי.<br />
צ'ירס!</p>
</div>
]]></content:encoded>
	</item>
	<item>
		<title>&#8235;תגובה לפוסט: &#34;From lock to abstract locker&#34;  מאת &#34;Liran&#34;&#8236;</title>
		<link>http://heblog.ronklein.co.il/2010/01/from-lock-to-abstract-locker/comment-page-1/#comment-2291</link>
		<dc:creator>&#8235;Liran&#8236;</dc:creator>		<pubDate>Wed, 06 Jan 2010 19:32:16 +0000</pubDate>
		<guid isPermaLink="false">http://heblog.ronklein.co.il/?p=214#comment-2291</guid>
		<description>&#8235;למרות שהרעיון יפה, אני לא חושב שיש לאבסטרקטציה הזאת הרבה טעם משום שהעלות של תפיסת נעילה (ללא contentions) הוא מינימלי, כך שהוספת עוד שכבת אבסטרקציה לקוד נראית מעט מיותרת (גורמת לקוד להראות מסובך יותר ללא צורך).
ובנוגע ל-SpinLock, מעטים הם המקרים שבאמת מצדיקים שימוש בו. בדרך כלל בשימושי &quot;High Level&quot; תקבל ביצועים טובים יותר בשימוש עם אובייקטי קרנל (שעליהם מתבסס Monitor).&#8236;</description> 		<content:encoded><![CDATA[<div style='direction: rtl;'>
<p>למרות שהרעיון יפה, אני לא חושב שיש לאבסטרקטציה הזאת הרבה טעם משום שהעלות של תפיסת נעילה (ללא contentions) הוא מינימלי, כך שהוספת עוד שכבת אבסטרקציה לקוד נראית מעט מיותרת (גורמת לקוד להראות מסובך יותר ללא צורך).<br />
ובנוגע ל-SpinLock, מעטים הם המקרים שבאמת מצדיקים שימוש בו. בדרך כלל בשימושי &quot;High Level&quot; תקבל ביצועים טובים יותר בשימוש עם אובייקטי קרנל (שעליהם מתבסס Monitor).</p>
</div>
]]></content:encoded>
	</item>
	<item>
		<title>&#8235;תגובה לפוסט: &#34;System.String is UTF16&#34;  מאת &#34;Arnon Rotem-Gal-Oz&#34;&#8236;</title>
		<link>http://heblog.ronklein.co.il/2009/09/system-string-is-utf16/comment-page-1/#comment-2276</link>
		<dc:creator>&#8235;Arnon Rotem-Gal-Oz&#8236;</dc:creator>		<pubDate>Sun, 27 Sep 2009 12:06:29 +0000</pubDate>
		<guid isPermaLink="false">http://heblog.ronklein.co.il/?p=50#comment-2276</guid>
		<description>&#8235;אותך לקורט :)&#8236;</description> 		<content:encoded><![CDATA[<div style='direction: rtl;'>
<p>אותך לקורט <img src='http://heblog.ronklein.co.il/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>
]]></content:encoded>
	</item>
	<item>
		<title>&#8235;תגובה לפוסט: &#34;תור מקבילי &#8211; Concurrent Queue&#34;  מאת &#34;רון קליין&#34;&#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;תגובה לפוסט: &#34;תור מקבילי &#8211; Concurrent Queue&#34;  מאת &#34;Liran Chen&#34;&#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>
