تمام سوالات سوالات بدون پاسخ سوال بپرسید

با سلام و خسته نباشید من می خواهم پروِه ای در c++ بنویسم که از thread استفاده کنم آیا می توان در c++ چنین کاری کرد؟

1 پاسخ

بله قربان! صد البته که این کار قابل انجام است. اما باید دید که host شما چنین اجازه ای را به شما می دهد یا خیر. به عبارت دیگر اگر قرار باشد با ++C در DOS برنامه سازی شود این کار ممکن نیست اما برای ایجاد و استفاده از ریسمان ها در windows, linux یا mac هیچ مشکلی وجود ندارد.
برای این کار شما می توانید از کتابخانه های مختلفی استفاده کنید. اما بصورت کلی این کتابخانه ها را می توان به دو دسته وابسته به سکوی اجرا یا مستقل از سکو تقسیم کرد. برای نمونه کتابخانه هایی همانند pthread, boost, Apache stdcxx, APR و کتابخانه هایی از این دست توانایی اجرا روی سکوهای مختلفی همچون windows, linux, mac را دارند. اما کتابخانه های دیگری هم وجود دارند که برای یک سکوی خاص مثل ویندوز یا لینوکس کاربرد دارند.
اما پیشنهاد من این است که بصورت کلی در کار با ++C عادت به استفاده از کتابخانه های مستقل از سکو داشته باشید. چون اکثر امکاناتی که شما برای برنامه سازی نیاز دارید بصورت مستقل از سکو در کتابخانه های قدرتمندی همچون boost وجود دارد. به این ترتیب اگر زمانی نیاز باشد تا شما برای یک سکوی دیگر برنامه ای با ++C بنویسید هیچ نیازی به یادگیری دوباره کتابخانه های آن سکو وجود نخواهد داشت. مثال ساده زیر از کدهای نمونه همراه کتابخانه boost آورده شده و چگونگی ایجاد یک ریسمان ساده را با استفاده از این کتابخانه نمایش می دهد:

#include <boost/thread/thread.hpp>
#include <iostream>

void helloworld()
{
    std::cout << "Hello World!" << std::endl;
}

int main()
{
    boost::thread thrd(&helloworld);
    thrd.join();
}

در مورد pthread و boost که مطمئنم، به شما انواع امکانات همگام سازی و کنترل مناطق بحرانی و ... را هم می دهند. در مورد boost من خودم بیشتر توصیه می کنم. چون چندین نفر از توسعه دهندگان اصلی آن جزء تیم استاندارد سازی ++C هستند و بسیاری از استانداردهای جدید C++ 0x یا حتی 11 ++C الگو گرفته از این کتابخانه است. این موضوع را بگویم این که کتابخانه شامل موارد متعددی از نیازهای برنامه سازی است و به ریسمان ها ختم نمی شود.

مورد دیگر این که تا حد امکان سعی شده است تا پباده سازی ها در این کتابخانه بصورت inline و کوتاه باشد تا شما تنها با استفاده از فایل header بتوانید کارتان را انجام دهید و نیازی به استفاده از کتابخانه های ایستا و پیوند آن با برنامه تان نباشد. البته در موارد محدودی نیاز به این کار هم هست. باز هم تاکید می کنم که این کتابخانه برای سکوهای مختلف بهینه سازی شده است و کارآیی بهتری را ایجاد می کند. در پایان هم این مورد را اضافه کنم که boost برای پیاده سازی ریسمان ها از کتابخانه pthread استفاده کرده است و برای استفاده از آن باید کتابخانه ای را هم بصورت ایستا به برنامه پیوند بزنید.

اگر مشکلی در استفاده از pthread یا boost داشتید شاید بتوانم در خدمت باشم.

toggle preview



آموزش زبان برنامه نویسی C#
آموزش jquery
آموزش برنامه نویسی
آموزش طراحی وبسایت
آموزش مدیریت وبسایت
آموزش جاوا Java
آموزش پایتون Python
آموزش سی شارپ C#‎
آموزش HTML و CSS
آموزش JavaScript جاوااسکریپت
آموزش jQuery جی کوئری
آموزش ساخت ربات تلگرام
آموزش برنامه‌نویسی PHP
آموزش برنامه‌نویسی اندروید
● آموزش‌های رایگان

سوالات مرتبط

راهنمای استفاده از ویرایشگر
  • *ایتالیک*‌ یا __ایتالیک__
  • **ضخیم** یا __ضخیم__
  • آدرس:[متن](http://url.com/ "عنوان")
  • عکس?![alt متن](/path/img.jpg "عنوان")
  • لیست عددی: 1. Foo 2. Bar
  • برای رفتن به خط بعد، هر جا مایلید که خط جدید شروع شود دو کاراکتر فاصله (space) قرار دهید
  • تگ‌های ساده HTML هم پشتیبانی می‌شوند

تگها:
  • ×55
  • ×41
  • پرسیده شده: 27 مه '12, 08:48
  • بازدید: 6,078 بار
  • آخرین بروزرسانی: 28 مه '12, 05:32

این سوال را دنبال کنیدتوسط ایمیل: ایمیل شما (باید معتبر باشد, هرگز به دیگران نمایش داده نمیشود):

هنگامی که شما به سیستم وارد شوید،قادر خواهید بود برای بروز رسانی ها مشترک شوید.


توسط RSS:

پاسخها

پاسخها و نظرها