View Full Version : سوال: ایجاد وقفه زمانی (برای همزمان سازی دو برنامه)
trustmiracle
چهارشنبه 25 شهریور 1388, 17:48 عصر
سلام.
من نیاز دارم که برنامم با یک نرم افزار سرور همزمان بشه. یعنی در یک زمان های مشخصی بر حسب میلی ثانیه اطلاعاتی رو از سرور دریافت کنه.می خواستم ببینم تابعی وجود داره که مثل یک وقفه عمل کنه و در فواصل زمانی سیگنالی رو بفرسته تا برنامه شروع به خواندن یک پورت کند؟
یا اصلا برای همزمان سازی راه بهتری سراغ دارید؟
ممنون
saeedIRHA
چهارشنبه 25 شهریور 1388, 20:56 عصر
سلام.
من نیاز دارم که برنامم با یک نرم افزار سرور همزمان بشه. یعنی در یک زمان های مشخصی بر حسب میلی ثانیه اطلاعاتی رو از سرور دریافت کنه.می خواستم ببینم تابعی وجود داره که مثل یک وقفه عمل کنه و در فواصل زمانی سیگنالی رو بفرسته تا برنامه شروع به خواندن یک پورت کند؟
یا اصلا برای همزمان سازی راه بهتری سراغ دارید؟
ممنون
ازThreads (http://java.sun.com/docs/books/tutorial/essential/concurrency/procthread.html)ها استفاده کن
برای وقفهٔ زمانی هم میتونی از این تابع استفاده کنی:
Thread.sleep(milliseconds)
trustmiracle
چهارشنبه 25 شهریور 1388, 23:17 عصر
نیاز به یک روش بهتر دارم.
اینجوری که شما می گید بعد از اجرای یکسری از دستورات 100 میلی ثانیه توقف داریم و همین سیکل تکرار میشه. حالا اگر زمان اجرای اون دستورات رو هم در نظر بگیریم (این زمان قابل مقایسه دقیق نیست) چند میلی ثانیه به زمان کل اضافه میشه و در تعداد تکرار بالا مشکل ساز میشه.
لینوکس یک تابع به اسم alarm داره که تو بازه زمانی معین وقفه هایی رو ایجاد میکنه. منتها به زبان c هست و نمی توانم ازش استفاده کنم.
ضمن اینکه با استفاده از jni هم نمی دونم سرعت رو پایین میاره یا نه؟ سرعت باید تا حد ممکن بالا باشه.
هانی هاشمی
سه شنبه 31 شهریور 1388, 08:45 صبح
چرا از timer استفاده نمی کنی ؟؟
trustmiracle
سه شنبه 31 شهریور 1388, 15:20 عصر
اول نمی دونستم تایمر این کار رو هم می کنه. فکر می کردم کارش برگرداندن ساعت و از اینجور چیزهاست. بعدا دیدم می توانه این کار رو هم بکنه.
شما می دونید چه جوری میشه فهمید یک تکه کد چقدر زمان می بره تا اجرا بشه؟
با زمان کامپایل اشتباه نشه.
ممنون.
هانی هاشمی
سه شنبه 31 شهریور 1388, 23:08 عصر
شما می دونید چه جوری میشه فهمید یک تکه کد چقدر زمان می بره تا اجرا بشه؟می تونید یه تایمر درست کنید و در اول کدتون start و در آخر کدتون stopش کنید و تعداد دفعات صدا زدن تابع تایمرتون رو بشمارید البته شاید راه اصولی تری هم باشه .
trustmiracle
چهارشنبه 01 مهر 1388, 09:56 صبح
من متوجه نشدم. یک مثال میزنید.
ممنون
هانی هاشمی
چهارشنبه 01 مهر 1388, 12:27 عصر
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
new Main();
}
int count = 0;
public Main ()
{
Timer timer = new Timer(1, new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
count++;
}
});
timer.start();
// your code
for (int i=0 ; i<1000; i++)
for (int k = 1 ; k<100;k++)
System.out.println("****");
timer.stop();
JOptionPane.showMessageDialog(null,count);
}بر حسب میلی ثانیه
trustmiracle
پنج شنبه 02 مهر 1388, 09:59 صبح
ممنون. لطف کردین.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.