亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 09_sample_system.c

?? Threadx 模版的源代碼
?? C
字號:
/* 09_sample_system.c

   Create two threads, and one mutex. 
   Use arrays for the thread stacks.
   The mutex protects the critical sections.
   Use an application timer to display thread timings.  */

/****************************************************/
/*    Declarations, Definitions, and Prototypes     */
/****************************************************/

#include   "tx_api.h"
#include   <stdio.h>

#define     STACK_SIZE         1024

CHAR stack_speedy[STACK_SIZE];
CHAR stack_slow[STACK_SIZE];


/* Define the ThreadX object control blocks...  */

TX_THREAD               speedy_thread;
TX_THREAD               slow_thread;

TX_MUTEX                my_mutex;

/* Declare the application timer */
TX_TIMER        stats_timer;

/* Declare the counters and accumulators */
ULONG           speedy_thread_counter = 0,
                total_speedy_time = 0;
ULONG           slow_thread_counter = 0,
                total_slow_time = 0;

/* Define prototype for expiration function */
void    print_stats(ULONG);

/* Define thread prototypes.  */

void    speedy_thread_entry(ULONG thread_input);
void    slow_thread_entry(ULONG thread_input);


/****************************************************/
/*               Main Entry Point                   */
/****************************************************/

/* Define main entry point.  */

int main()
{

    /* Enter the ThreadX kernel.  */
    tx_kernel_enter();
}


/****************************************************/
/*             Application Definitions              */
/****************************************************/

/* Define what the initial system looks like.  */

void    tx_application_define(void *first_unused_memory)
{


   /* Put system definitions here,
      e.g., thread and mutex creates */

   /* Create the speedy_thread.  */
   tx_thread_create(&speedy_thread, "speedy_thread",
                    speedy_thread_entry, 0,
                    stack_speedy, STACK_SIZE,
                    5, 5, TX_NO_TIME_SLICE, TX_AUTO_START);

   /* Create the slow thread */
   tx_thread_create(&slow_thread, "slow_thread",
                    slow_thread_entry, 1,
                    stack_slow, STACK_SIZE,
                    15, 15, TX_NO_TIME_SLICE, TX_AUTO_START);

   /* Create the mutex used by both threads  */
   tx_mutex_create(&my_mutex, "my_mutex", TX_NO_INHERIT);

   /* Create and activate the timer */
   tx_timer_create (&stats_timer, "stats_timer", print_stats,
                    0x1234, 500, 500, TX_AUTO_ACTIVATE);
 
}


/****************************************************/
/*              Function Definitions                */
/****************************************************/

/* Define the activities for the Speedy Thread */

void    speedy_thread_entry(ULONG thread_input)
{
UINT    status;
ULONG   current_time;
ULONG   start_time, cycle_time;

   while(1)
   {

      /* Get the starting time for this cycle */
      start_time = tx_time_get();

      /* Activity 1:  2 ticks. */
      tx_thread_sleep(2);

      /* Activity 2:  5 ticks   *** critical section ***
      Get the mutex with suspension. */

      status = tx_mutex_get(&my_mutex, TX_WAIT_FOREVER);
      if (status != TX_SUCCESS)  break;  /* Check status */

      tx_thread_sleep(5);

      /* Release the mutex. */
      status = tx_mutex_put(&my_mutex);
      if (status != TX_SUCCESS)  break;  /* Check status */

      /* Activity 3:  4 ticks. */
      tx_thread_sleep(4);

      /* Activity 4:  3 ticks   *** critical section ***
      Get the mutex with suspension. */

      status = tx_mutex_get(&my_mutex, TX_WAIT_FOREVER);
      if (status != TX_SUCCESS)  break;  /* Check status */

      tx_thread_sleep(3);

      /* Release the mutex. */
      status = tx_mutex_put(&my_mutex);
      if (status != TX_SUCCESS)  break;  /* Check status */

      /* Increment thread counter, compute cycle time & total time */
      speedy_thread_counter++;
      current_time = tx_time_get();
      cycle_time = current_time - start_time;
      total_speedy_time = total_speedy_time + cycle_time;

   }
}

/****************************************************/

/* Define the activities for the Slow Thread */

void    slow_thread_entry(ULONG thread_input)
{
UINT    status;
ULONG   current_time;
ULONG   start_time, cycle_time;

   while(1)
   {

      /* Get the starting time for this cycle */
      start_time = tx_time_get();

      /* Activity 5:  12 ticks   *** critical section ***
      Get the mutex with suspension. */

      status = tx_mutex_get(&my_mutex, TX_WAIT_FOREVER);
      if (status != TX_SUCCESS)  break;  /* Check status */

      tx_thread_sleep(12);

      /* Release the mutex. */
      status = tx_mutex_put(&my_mutex);
      if (status != TX_SUCCESS)  break;  /* Check status */

      /* Activity 6:  8 ticks. */
      tx_thread_sleep(8);

      /* Activity 7:  11 ticks   *** critical section ***
      Get the mutex with suspension. */

      status = tx_mutex_get(&my_mutex, TX_WAIT_FOREVER);
      if (status != TX_SUCCESS)  break;  /* Check status */

      tx_thread_sleep(11);

      /* Release the mutex. */
      status = tx_mutex_put(&my_mutex);
      if (status != TX_SUCCESS)  break;  /* Check status */

      /* Activity 8:  9 ticks. */
      tx_thread_sleep(9);
 
      /* Increment thread counter, compute cycle time & total time */
      slow_thread_counter++;
      current_time = tx_time_get();
      cycle_time = current_time - start_time;
      total_slow_time = total_slow_time + cycle_time;

   }
}

/****************************************************/

/* Display statistics at periodic intervals */
void print_stats (ULONG invalue)
{
   ULONG   current_time, avg_slow_time, avg_speedy_time;

   if ((speedy_thread_counter>0) && (slow_thread_counter>0))
   {
      current_time = tx_time_get();
      avg_slow_time = total_slow_time / slow_thread_counter;
      avg_speedy_time = total_speedy_time / speedy_thread_counter;

      printf("\n**** Timing Info Summary\n\n");
      printf("Current Time:               %lu\n", current_time);
      printf("  speedy_thread counter:  %lu\n", speedy_thread_counter);
      printf(" speedy_thread avg time:  %lu\n", avg_speedy_time);
      printf("    slow_thread counter:  %lu\n", slow_thread_counter);
      printf("   slow_thread avg time:  %lu\n\n", avg_slow_time);
   }
   else printf("Bypassing print_stats, Time: %lu\n", tx_time_get());
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区2区3区在线看| 久久婷婷综合激情| 亚洲资源在线观看| 91成人在线观看喷潮| 亚洲一二三四在线观看| 4438亚洲最大| 激情小说亚洲一区| 国产精品久久三| 91福利在线观看| 蜜桃av一区二区在线观看| 久久久影院官网| 色中色一区二区| 婷婷综合另类小说色区| 精品美女被调教视频大全网站| 国产盗摄视频一区二区三区| 亚洲欧美色一区| 欧美一级二级在线观看| 高清shemale亚洲人妖| 亚洲精品国产无天堂网2021| 日韩免费看的电影| gogo大胆日本视频一区| 午夜精品久久久久久久久| 久久久久久久久久电影| 一本色道**综合亚洲精品蜜桃冫| 亚洲成人av在线电影| 国产人妖乱国产精品人妖| 色噜噜狠狠色综合欧洲selulu| 久久精品理论片| 亚洲人成网站色在线观看| 日韩久久免费av| 一本大道av一区二区在线播放| 激情综合色丁香一区二区| 樱花影视一区二区| 在线观看91精品国产入口| 波多野结衣精品在线| 日本中文在线一区| 亚洲欧美区自拍先锋| 久久精品亚洲精品国产欧美kt∨| 欧美视频一区二区在线观看| 国产成人精品三级| 日日骚欧美日韩| 亚洲精品成人天堂一二三| 久久久噜噜噜久噜久久综合| 欧美日韩国产a| 色婷婷综合久久久久中文一区二区| 激情五月激情综合网| 婷婷综合在线观看| 一区二区三区中文字幕| 国产精品无码永久免费888| 欧美一区二区福利在线| 欧美少妇bbb| 色综合久久久久久久久久久| 成人深夜福利app| 国产风韵犹存在线视精品| 欧美a级理论片| 亚洲成人一二三| 一区二区三区四区在线播放| 中文字幕在线不卡| 国产女主播视频一区二区| 26uuu精品一区二区在线观看| 欧美一区二区三区婷婷月色| 欧美剧在线免费观看网站| 色婷婷一区二区三区四区| 91玉足脚交白嫩脚丫在线播放| 成人免费视频视频在线观看免费| 国产一区二区三区| 经典一区二区三区| 国内精品伊人久久久久av一坑| 久久国产麻豆精品| 奇米888四色在线精品| 婷婷成人综合网| 日日摸夜夜添夜夜添精品视频 | 亚洲视频中文字幕| 欧美激情中文不卡| 欧美国产精品v| 国产精品乱码妇女bbbb| 国产精品色在线| 中文字幕一区二区视频| 国产精品久久久久久久裸模| 国产精品久久久久久久久快鸭| 欧美国产综合一区二区| 国产精品色哟哟| 一区二区三区中文字幕在线观看| 亚洲一区中文日韩| 午夜欧美视频在线观看| 秋霞成人午夜伦在线观看| 久久99精品国产麻豆婷婷| 国产精品888| 91视频一区二区三区| 精品视频全国免费看| 91麻豆精品国产自产在线| 欧美r级在线观看| 亚洲国产成人自拍| 亚洲欧美在线观看| 偷拍自拍另类欧美| 国产一级精品在线| 成人动漫视频在线| 欧美中文字幕亚洲一区二区va在线| 欧美精品1区2区| 久久夜色精品国产欧美乱极品| 国产精品电影院| 手机精品视频在线观看| 国产一区二区伦理| 国产视频一区在线观看| 精品国产1区二区| 国产精品麻豆网站| 日日摸夜夜添夜夜添精品视频| 久久99久久精品| 91麻豆swag| 日韩午夜电影在线观看| 国产精品毛片久久久久久| 亚洲r级在线视频| 国产精品亚洲а∨天堂免在线| 91浏览器打开| 欧美精品一区二区在线播放 | 国产精品成人在线观看| 一区二区高清视频在线观看| 九九精品视频在线看| 91蜜桃网址入口| 精品免费视频.| 一区二区三区久久| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美日韩精品一区二区三区四区| 欧美成人性战久久| 一区二区三区在线影院| 国产伦精品一区二区三区免费 | 日日摸夜夜添夜夜添精品视频| 国产成a人亚洲| 91精品国产综合久久久久久| 国产精品久久久久精k8| 狠狠色狠狠色合久久伊人| 色综合久久综合中文综合网| 亚洲精品在线一区二区| 午夜国产不卡在线观看视频| 中文字幕精品综合| 亚洲精品ww久久久久久p站| 韩国精品免费视频| 欧美精品v国产精品v日韩精品| 18涩涩午夜精品.www| 国产精品亚洲一区二区三区在线| 欧美日韩国产欧美日美国产精品| 国产精品拍天天在线| 蜜桃av一区二区在线观看| 欧美性高清videossexo| 亚洲天堂久久久久久久| 国产成人精品一区二| 日韩视频一区二区| 青青草精品视频| 欧美福利电影网| 午夜在线成人av| 欧美日韩你懂得| 亚洲一二三级电影| 色婷婷精品大在线视频| 17c精品麻豆一区二区免费| 高清不卡一区二区| 国产亚洲欧洲997久久综合 | 91视视频在线观看入口直接观看www | 久久国产婷婷国产香蕉| 7777精品伊人久久久大香线蕉的| 亚洲最大成人网4388xx| 色婷婷综合久久久中文一区二区| 国产精品国产三级国产普通话蜜臀| 久久国产精品72免费观看| 欧美日韩mp4| 手机精品视频在线观看| 3atv一区二区三区| 免播放器亚洲一区| 2024国产精品视频| 国产精品一区三区| 日本一区二区三区四区在线视频| 国产在线视频一区二区三区| 久久久久久久综合色一本| 国产99精品视频| 日韩码欧中文字| 在线看国产一区二区| 亚洲电影第三页| 日韩一区二区三区av| 狠狠v欧美v日韩v亚洲ⅴ| 国产乱人伦精品一区二区在线观看| 91视视频在线观看入口直接观看www | 亚洲一卡二卡三卡四卡五卡| 精品视频全国免费看| 日韩成人一区二区| 精品国产91久久久久久久妲己| 国产成人久久精品77777最新版本| 欧美激情综合在线| 91麻豆国产香蕉久久精品| 亚洲国产另类精品专区| 欧美一级日韩不卡播放免费| 精品一区二区在线看| 国产精品你懂的| 欧洲一区在线观看| 久久99热国产| 中文字幕一区视频| 欧美日产国产精品| 国产一区二区三区免费| 亚洲精品五月天| 日韩精品专区在线影院重磅| 成人福利视频在线看| 亚洲国产美女搞黄色|