Contiki例(一)执行被阻塞的任务
来源:互联网 发布:淘宝代销入门基础知识 编辑:程序博客网 时间:2024/06/07 01:29
一个最简单的思路,做一个任务,每次调度它时只打印一行“Hello World”,调度10次后此任务退出。
系统环境和所需的文件同上一篇博文
今天调试成功了,任务函数如下:
PROCESS_THREAD(hello_world_process, ev, data)
//static char process_thread_hello_world_process(struct pt *process_pt, process_event_t ev, process_data_t data)
{
static int i;
PROCESS_BEGIN();
//#define PROCESS_BEGIN() PT_BEGIN(process_pt)
//#define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; if (PT_YIELD_FLAG) {;} LC_RESUME((pt)->lc)
//#define LC_RESUME(s) switch(s) { case 0:
// { char PT_YIELD_FLAG = 1; if (PT_YIELD_FLAG) {;} switch((process_pt)->lc) { case 0:;
for(i=0;i<10;i++){
printf("Hello, world\n");
PROCESS_YIELD();
}
PROCESS_END();
//#define PROCESS_END() PT_END(process_pt)
//#define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \
// PT_INIT(pt); return PT_ENDED; }
// }; PT_YIELD_FLAG = 0; (process_pt)->lc = 0;; return 3; };
}
/*---------------------------------------------------------------------------*/
main()主函数的调度如下:
int main(int argc, char **argv)
{
int i=0;
struct process * q;
process_init();
// process_start(&etimer_process, NULL);
// ctimer_init();
//autostart_start(autostart_processes);
process_start(autostart_processes[0] ,NULL);
PRINTF("\r\nprocess_list=%lx",(long)process_list);
if(process_list) PRINTF("start: starting process '%s'\n", process_list->name);
while(process_list) {
for(q = process_list; q != NULL; q = q->next){
do {
}
while(process_run()>0);
process_post_synch(q, PROCESS_EVENT_NONE, NULL);
i++;
}
}
PRINTF("\r\nprocess count = %d",i);
return 0;
}
/*---------------------------------------------------------------------------*/
编译及运行情况如下图所示,调度10次后程序退出了。
0 0
- Contiki例(一)执行被阻塞的任务
- Contiki例(二)执行被阻塞的任务第二种方法
- Contiki例(三)使用etimer定时器激活被阻塞的任务
- 任务执行(一)
- PHP执行定时任务的实现思路(一)
- 关于java中阻塞队列(LinkedBlockingQueue)中任务执行失败后的重试机制几种方案
- quartz任务调度框架实现任务定时执行,不传参的配置(一)
- windows xp 定时执行任务(一)
- 并发编程(一) 任务执行
- MapReduce调度与执行原理之任务执行(一)
- asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例(一)
- asp.net利用多线程执行长时间的任务,客户端显示出任务的执行进度的示例(一)
- contiki任务调度机制分析
- 无阻塞的Javascript脚本(一)
- ThreadPoolExecutor在一个确定的队列下提交任务,如果执行队列满必须阻塞的解决方法
- JAVA定时执行任务(Tomcat 下的定时任务)
- 使用laravel的任务调度(定时执行任务)
- Hadoop MapReduce之MapTask任务执行(一)
- 作为产品助理的这一年
- 华为机试题-超长正整数相加
- Summary for week3
- 古典小说丛书系列软件
- hibernate 多对多(many-to-many)
- Contiki例(一)执行被阻塞的任务
- 转Intellij支持Eclipse的代码格式化文件
- Spring核心组件之Bean
- ubuntu14.04 下 ARPACK/PARPACK 安装具体步骤
- leetcode 077 —— Combinations
- 移植u-boot-2015.07-rc3之修改代码支持NorFlash(四)
- JAVA基础一大堆0802集合+泛型
- c#region
- 在myeclipse的java web项目中手动添加jstl的步骤