PDA

View Full Version : سوال: اجرای هم زمان دو تابع



Arcsinos
پنج شنبه 21 بهمن 1389, 14:26 عصر
سلام
میخواستم ببینم تو سی میشه دو تابع رو هم زمان فراخوانی کرد . مثلا برنامه ای که دو عدد رو بگیره و هم زمان دو تا تابع که اولی دو عدد رو جمع میکنه و دومی دو عدد رو تفریق میکنه رو فراخوانی کنه ؟

ghasemweb
پنج شنبه 21 بهمن 1389, 21:33 عصر
تو میحط کنسولی به نظر من نشه این کار رو کرد چون پردازنده هر لحضه فقط یه روال رو بررسی میکنه البته این نطر من هستش.

Arcsinos
پنج شنبه 21 بهمن 1389, 21:38 عصر
با تشکر نظر من هم بر همینه ، اصلا سیستم عامل داس از سیستم Multitasking پیروی نمیکنه بلکه ویندوز هست که از این عملکرد استفاده میکنه ، ولی کلا سوال من اینه که اگه نمیشه پس لینوکس یا همین ویندوز چطور این کار رو انجام میدن و اگه میشه چطوری ؟

r00tkit
پنج شنبه 21 بهمن 1389, 22:01 عصر
در مورد thread (http://en.wikipedia.org/wiki/Thread_%28computer_science%29)سرچ کن

http://upload.wikimedia.org/wikipedia/commons/thumb/a/a5/Multithreaded_process.svg/220px-Multithreaded_process.svg.png


یه کتاب بگیر در مورد windows programming بخون

tdkhakpur
جمعه 22 بهمن 1389, 00:29 صبح
تو میحط کنسولی به نظر من نشه این کار رو کرد چون پردازنده هر لحضه فقط یه روال رو بررسی میکنه البته این نطر من هستش.

داخل هر میحطی که بتوان با کد را روانه cpu کرد این امکام وجود دارد که بتوان بطور همزمان با کنترل رجیسترها عمل همزمان سازی رو اعمال کرد.

ببینم تو سی میشه دو تابع رو هم زمان فراخوانی کرد . مثلا برنامه ای که دو عدد رو بگیره و هم زمان دو تا تابع که اولی دو عدد رو جمع میکنه و دومی دو عدد رو تفریق میکنه رو فراخوانی کنه ؟
جدای از سیستم عامل میتوان باعث شد که کدهای یک برنامه بصورت هم زمان اجرا بشوند.برای این کار میتوانید کلاس task در سی رو مطالع کنید که اکمکان چند پردازشی رو برای کدهای داخل یک برنامه رو میده.


ولی کلا سوال من اینه که اگه نمیشه پس لینوکس یا همین ویندوز چطور این کار رو انجام میدن و اگه میشه چطوری ؟

اگر منظور اجرای همزمان دو برنامه جدا هست که برای سیستم عامل مخصوص مانند ویندوز یا داس و یا حتی لینوکس نوشته میشه قضیه فرق میکنه قطعا برای داس نمیتوان دو برنامه رو همزمان اجرا کرد ولی کدهای موجود در یک برنامه رو که بصورت دو یا چند تابع جدا باشن رو میشه با کلاس task که در بالا بهش اشاره شد بصورت همزمان اجرا کرد .
ولی در مویرد اینکه لینوکس چرا میتونه همزمان دو برنامه را اجرا کنه این بر میگرده به طراحی خود سیستم عامل که در داس این امکان قرار داده نشده.

r00tkit
جمعه 22 بهمن 1389, 01:28 صبح
یه نگاهی هم به Terminate and Stay Resident (http://en.wikipedia.org/wiki/Terminate_and_Stay_Resident) بندازید

alireza.alallah
چهارشنبه 27 بهمن 1389, 21:58 عصر
مربوط مسئه Thread می شه! در غیر این صورت فکر نمی کنم بشه کاری کرد.