النوم () تماطل برنامجي في وقت مبكر جدا. ما الخطأ الذي افعله؟

StackOverflow https://stackoverflow.com/questions/284962

  •  08-07-2019
  •  | 
  •  

سؤال

وأريد أن أكتب برنامج صغير يجب طباعة شيء من هذا القبيل

<اقتباس فقرة>   

واختبار وحدة المعالجة المركزية ... فعلت
  اختبار ذاكرة الوصول العشوائي ... فعلت

ووهلم جرا.

وكتبت البرنامج التالي في C:

printf( "testing RAM...\t\t" );
sleep( sleep_time );
printf( "done\n\n" );

printf( "testing HDD...\t\t" );
sleep( sleep_time );
printf( "done\n\n" );

وحيث sleep_time هو 2.

ولكن، بدلا من طباعة "اختبار وحدة المعالجة المركزية ..." أولا، ثم الانتظار، ثم طباعة "القيام به"، فإنه ينتظر أولا، ثم يطبع خط كامل، وهي ليست بالضبط ما كان يدور في خلدي.

واعتقد ان هذا لديها ما تفعله مع التحسين التلقائي من قبل المجمع.
على أي حال، ماذا يمكنني أن أفعل للحصول على النتيجة المرجوة؟

وأستخدمه كسكودي 3.1 على OSX 10.5.6

وشكرا لكم،
باستيان

هل كانت مفيدة؟

المحلول

والمسألة هي أن يتم تخزينها مؤقتا المطبوعات الخاصة بك. مباشرة قبل النوم، واستدعاء fflush (المعياري)؛ لمسح المخزن المؤقت

نصائح أخرى

والمترجم لا يمكن إعادة ترتيب المطبوعات وينام، لأنهم "السلوك يمكن ملاحظتها من الخارج" للآلة مجردة C.

وما تحصل عليه هو يرجع إلى التخزين المؤقت المعياري. يمكنك استخدام fflush أو الطباعة إلى ستدير، الذي لا مخزنة.

وفقط باستخدام \ ن أو ENDL في نهاية printf الأول ينبغي أن يكون كافيا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top