PDA

View Full Version : مشکلات با boost::thread



navid-sirius
جمعه 16 بهمن 1388, 16:37 عصر
سلام
من می خواستم در c++ از مالتی ترد استفاده کردم به همین خاطر رفتم از بوست استفاده کردم و دارم توتوریال خودش رو می خونم اما دستوراتی که خودش تو توتوریال نوشته یا اررور می دهند یا هیچ کاری انجام نمی دهند. برای مثال تابع boost::thread testThread1(test1,2)); با خطای کامپایلر مواجه می شود(test1 یک تابع با آرگومان اینت است) و تابع testThread1.detach() که باید thread را قطع کند کار نمی کند. اگر بتوانید کمک کنید ممنون می شوم.

amin1softco
جمعه 16 بهمن 1388, 22:45 عصر
شما دوست من باید اول کامپایلرتون رو آماده کنید یعنی فایل های ضمیمه در اون سایت رو در پوشه include کامپایلرتون کپی کنید و باید اول خط همه کد هاتون این باشه


#include <boost/thread.hpp
ولی اگر از vc++6 استفاده می کنید نیاز به این کار ها نیست و فقط باید سر فایل


#include <process.h>

را اضافه کنید و اینجوری توابع را با هم فراخوانی کنید:


_beginthread(Func1,0,NULL);
_beginthread(Func2,0,NULL);


البته در سی پی یو های دو هسته یکمی متفاون تره که ..........

navid-sirius
جمعه 16 بهمن 1388, 23:18 عصر
سلام با تشکر از این که به پست من پاسخ دادید لازم می دانم چند نکته را عرض کنم تا مشکل من واضح تر شود
1- من در linux و با کامپایلر gcc و نرم افزار eclipse برنامه می نویسم.
2- مشکل من با کامپایلر است. چون من می توانم یک ریسمان درست کنم و آن را join کنم اما نمی توانم از تابع ()timed_join استفاده کنم مثلا من برای ریسمان thread1 می نویسم (4)thread1.timed_join و انتظار دارم اگر پروسس بیشتر از 4 ثانیه طول کشید متوجه شوم. اما با خطای کامپایلر مواجه می شوم.

amin1softco
جمعه 16 بهمن 1388, 23:49 عصر
من هم زیاد با این سر فایل کار نکردم ولی به گفته خودتون شاید اگه ورژن جدید gcc رو گیر بیارید و از نو نصب کنید مشکلتون حل بشه اما خوب یک نگاهی هم به لینک زیر بکنید بد نیست .....
http://www.boost.org/doc/libs/1_35_0/boost/thread/win32/thread.hpp