آخرین اخبار و مقالات و مطالب پیرامون نخ در ایران آی سی تی نیوز ، پایگاه فناوری اطلاعات و ارتباطات ایران

بر روی این دامنه اینترنتی

سیستم مدیریت محتوا

پارس

سی ام اس

نصب شده است که نرم افزاری قوی جهت

طراحی سایت

می باشد.

طراحی وب

با استفاده از

پرتال

(

پورتال

) پارس منجر به

طراحی وب سایت

شما می شود.

طراحی وب سایت

کپی رایت

پورتال

پارس

مواظب باشید!

برنامه نویسی رخدادگرا یکی از الگوهای برنامه نویسی است که جریان برنامه را از طریق رخدادها (event) کنترل می کند. این رخدادها می توانند از سمت دستگاه های ورودی مثل ماوس و کیبورد صادر شوند یا از طریق پیغام های صادر شده یک نخ یا فرآیند باشند. در این مقاله قصد داریم در مورد رخدادها و کنترل آنها در سیستم عامل ویندوز صحبت کنیم.برای روشن تر شدن موضوع بگذارید یک مثال بزنیم: یک برنامه word را باز می کنید و شروع به تایپ می کنید. مطالب تایپ شده همان لحظه نمایش داده می شوند. این عمل چطور اتفاق می افتد؟ وقتی شما کلیدی از صفحه کلید را فشار دهید، از طرف کیبورد یک وقفه صادر می شود که به سیستم عامل می فهماند که فلان کلید زده شده است. سیستم عامل با یک مکانیزم درونی پیغامی به نام wm_keydown را در صف پیغام هاقرار می دهد. حال برنامه ورد این پیغام را دریافت کرده و مقدار کلید زده شده را در صفحه نمایش چاپ می کند. خوب، برنامه ورد این کار را چگونه انجام می دهد؟ وقتی شما یک برنامه ویندوزی می نویسید به یک فراخواننده (callback) برخورد می کنید که وقتی پیغامی از طرف سیستم عامل صادر شد، توسط این تابع هندل می شود و عملیات مورد نظر انجام می شود. پس قبل از این که بحث را دنبال کنیم، بگذارید کمی در مورد مفهوم فراخواننده صحبت کنیم: فرض کنید شما یک برنامه نوشته اید که قصد دارد یک سری داده را مرتب کند و می خواهید در هر مرحله به یک روش آنها را مرتب کنید. یک راه استفاده از تابع های مختلف برای مرتب کردن آن ها است. این روش ساده و درست است، اما فرض کنید شما کد خود را در یک کتابخانه قرار داده اید و برنامه نویس دیگری که قرار است از کتابخانه شما استفاده کند، نمی خواهد از متدهای مرتب سازی شما استفاده کند. در این جا کتابخانه شما در انجام این عمل ناتوان است ، خب چه کار کنیم که دیگر برنامه نویسان بتوانند برای مرتب سازی از روش های دلخواه خودشان استفاده کنند؟ برای این کار شما نیاز به تعریف یک اشاره گر به تابع (pointer to function) دارید. برنامه نویس های دیگر با مقداردهی آن می توانند روش مرتب سازی خود را استفاده کنند برای تعریف اشاره گر به تابع در c++ به روش زیر عمل می کنیم: مقدار returntype نوع داده برگشتی را مشخص می کند. callbackname نام فراخواننده است و مقدارهای 1param ¢ 2param نشان دهنده متغییرهای ورودی اند. وقتی شما یک تابع را به یک فراخواننده می دهید، باید الگوی تابع مطابق با الگوی فراخواننده باشد. مانند کد زیر: همان طور که مشاهده می کنید تابع callback از الگوی fp تبعیت می کند یعنی یک int را به عنوان ورودی و یک double را به عنوان خروجی قبول می کند. بسیار خب حال که با فراخواننده آشنا شدیم، برویم سراغ اصل موضوع که گرفتن مقدار پیغام صادر شده توسط سیستم عامل است. شما به یک شیء از کلاس wndclass (این کلاس نشان دهنده یک پنجره است) برای کنترل کردن پیغام های سیستم عامل نیاز دارید. فیلد lpfnwndproc را از کلاس wndclass مقداردهی کنید این فیلد یک اشاره گر به تابع است و از این الگو تبعیت می کند: برای تعریف مقادیر ورودی و خروجی به لینک پاورقی رجوع کنید. به طور خلاصه hwnd یک عدد صحیح است که کنترل کننده پنجره یا یک کنترل را در خود نگهداری می کند که پیغام برای آن صادر شده است. با مقدار hwnd می توانیم تشخیص دهیم که پیغام برای کدام کنترل صادر شده است. حال باید مقدار پیغام را بازیابی کنیم برای این کار با توجه به پیغام صادر شده مقدار lparam یا wparam را بازیابی می کنیم برای مثال wm_keydown شما با بازیابی lparam می توانید تشخیص دهید که کدام کلید فشار داده شده است . دیدید که کار سختی را برای هندل کردن پیغام ها و نمایش مقدار آن در صفحه نمایش داریم. این مشکل در زبان های ویژوال (زبان هایی که قابلیت ساخت gui رابط کاربری را دارند) معمولا وجود ندارد و اشیای موجود در این زبان ها به صورت داخلی تمام کارها را انجام می دهند. به طور مثال شما می توانید با قرار دادن یک باکس متنی، مقدار وارد شده توسط صفحه کلید را نمایش دهید. ولی خب ممکن است بخواهید که کاربر در تکست باکس فقط عدد وارد کند. فرض کنید که این کار را با زبان های مثل c قرار باشد انجام دهیم. خب باید شما مقدار wm_keydown را بازیابی کنید و بعد آن را اعتبارسنجی کنید. در زبان های ویژوال با مقداردهی رخداد مربوط به keydown ، می توانید مقدار کلید زده شده را بررسی کنید. این رخداد در واقع یک نماینده است و نماینده خود یک اشاره گر به تابع است و رخداد یک شیء از یک مقدار پیش فرض دارند که اگر رخداد توسط برنامه نویس مقداردهی نشد مقدار پیش فرض آنها فراخوانی می شود و کاربر می تواند آنرا مقداردهی کند و از آن استفاده کند. یا این که با ارث بری و بازنویسی متد مربوط به کنترل بدون مقداردهی رخداد متد خود را اجرا کند و یک کنترل سفارشی درست کند. مثلا باکس متنی که فقط عدد را به عنوان ورودی قبول کند. مرجع: http://msdn.com
امیربهاالدین سبط الشیخ


پردازنده بولدوزر، پادشاه چندوظیفگی

... amd می گوید فناوری ابرچندنخی او که عناصر و ضمائم کمتری دارد، بسیار پیشرفته تر از فناوری اینتل است چراکه با 2 برابر شدن قابلیت هسته ها، این روش موجب فعال سازی سریع تر پردازش 2 نخ پردازنده خواهد شد ...

منبع : جام جم آنلاین    تاریخ : 16   آبان   1389   شاخه : سخت افزار   


طبق قانون با روزنامه و سایت های متخلف برخورد می کنیم

... به گزارش خبرنگار خبرگزاری دانشجویان ایران (ایسنا)، سیدمحمد حسینی - وزیر فرهنگ و ارشاد اسلامی - که در حاشیه جلسه هیات دولت با خبرنگاران سخن می گفت، همچنین در پاسخ به این که وقتی روزنامه ها تعطیل و خبرنگاران این روزنامه ها نیز بی کار می شوند، برای آنان مشکلات عدیده ای ایجاد می شود، گفت: این حربه نخ نما شده ای است که بعضا مطرح می شود و بعضا مدیران مسوول نشریات برخی از کارکنان شریف خود را بهانه می کنند و این بحث را مطرح می کنند؛ ولی این نمی تواند مانع اجرای قانون شود ...

منبع : همشهری آنلاین    تاریخ : 9   اردیبهشت   1389   شاخه : اینترنت   


طراحی معماری پردازنده های جدید i9 اینتل

... فناوری چند نخی مجازی6به آن اجازه می دهد توانایی پردازش 12 نخ یا هسته پردازش را در یک زمان داشته باشد ...

منبع : بازیاب    تاریخ : 4   دی   1388   شاخه : سخت افزار   


قدرت و سرعت سرورها با پردازنده core i9

... فناوری چند نخی مجازی6 به آن اجازه می دهد توانایی پردازش 12 نخ یا هسته پردازش را در یک زمان داشته باشد ...

منبع : جام جم آنلاین    تاریخ : 29   آذر   1388   شاخه : سخت افزار   


برترین ابررایانه های جهان

... پردازنده 8i از نسل cell (پردازنده پلی استیشن3) است و همچون دیگر پردازنده های این نسل، 8هسته پردازشی (spe) و یک هسته مدیریتی (ppe) دارد و چون ppe، 2نخ سخت افزاری را اجرا می کند، این پردازنده می تواند 9 نخ را همزمان اجرا کند ...

منبع : جام جم آنلاین    تاریخ : 1   آذر   1388   شاخه : سخت افزار   


پای اینتل در کفش انویدیا

... هسته های لارابی و کودا10 هرکدام توانایی اجرای 4 نخ را به طور همزمان دارند ... لارابی برای اجرای موازی چندین نخ آنها را به دسته های 16تایی تقسیم می کند و اجرای هر دسته را به vu می سپارد(این تقسیم بندی در معماری کودا متفاوت است و بدین صورت است که نخ ها به دسته های 32تایی تقسیم می شوند و اجرای هر دسته به یک sm13 سپرده می شود که خود پردازنده ای هشت هسته است) ... در لارابی خلاف معماری کودا، زمان بندی نخ ها توسط نرم افزار صورت می گیرد ... برای برنامه نویسی موازی، لارابی نیتیو چندین کتابخانه مدیریت نخ را پشتیبانی خواهد کرد که thread building blocks و posix threading و openmp از آن جمله اند ...

منبع : جام جم آنلاین    تاریخ : 19   مهر   1388   شاخه : سخت افزار   


وردپرس زیر حمله است. شاید شما همین الان در حال هک شدن هستید!

... این جوری دیگر راحت راحت خواهیم بود و اگر شب خوابیدم و صبح وبلاگم هک شده بود مشکلی نخواهیم داشت :) از کجا بفهمیم وبلاگ مان زیر آتش حملات است؟ یک سر نخ مهم برای فهمیدن این موضوع اضافه شدن یوزر و ادمین است که به دو صورت اتفاق می افتد ...

منبع : خوارزمی    تاریخ : 16   شهریور   1388   شاخه : امنیت   


تجربه برنامه نویسی موازی ساده

... این قابلیت برای اجرای برخی نخ ها4 با ویژگی خاص، بسیار مناسب است ... اگر پردازنده مرکزی بخواهد این کار را انجام دهد، 100بار باید یک دستور را اجرا کند ولی gpu این عملیات را تقریبا 100برابر سریع تر انجام می دهد! تنها ویژگی که نخ ها باید داشته باشند این است که متشابه باشند ... 3- gpuهای مجهز به کودا صدها هسته دارند و می توانند به صورت انتخابی هزاران نخ را اجرا کنند ...

منبع : جام جم آنلاین    تاریخ : 1   شهریور   1388   شاخه : برنامه نویسی   


مدیریت چندنخی در ویندوز

... در مقاله پیش در مورد استفاده از نخ ها در دات نت صحبت کردیم، و یکی دو روش ساده برای پیاده سازی نخ ها را بیان کردیم ... در برنامه های ویندوزی، اشیا و کنترل ها متعلق به نخی هستند به نام uithread و نمی توان از نخی دیگر به اشیا این نخ دسترسی داشت: void showprogress(){ /*update ui*/ } void calcpi(int digits) { showprogress(); /*calculate pi*/} void calcbutton_click(object sender, eventargs e) { this ... showprogress();} اگر کد بالا را اجرا کنید دیگر با پیغام خطایی که در بالا گفته شد روبه رو نمی شوید، علت چیست؟ چندنخی در wpf در wpf نیز مثل ویندوز فرم عمل می شود ولی با یک سری تفاوت ها که در زیر آنها را بیان می کنیم، همان طور که گفته شد، در برنامه های ویندوزی کنترل اشیا در اختیار تردی است که آن را به وجود آورده و امکان تغییر آن با همان نخ است ... همان طور که گفته شد برای حل مشکل دسترسی از یک نخ به نخ دیگر باید از dispatcher استفاده کرد؛ شئی dispatcherobject یک ویژگی به نام dispatcher دارد که به system ...

منبع : جام جم آنلاین    تاریخ : 18   مرداد   1388   شاخه : برنامه نویسی   

صفحه 1
2 3 4


طراحی وب سایت

Content on this page requires a newer version of Adobe Flash Player.

Get Adobe Flash player