陈颖频的科学网博客分享 http://blog.sciencenet.cn/u/s110500617

博文

自创的多线程的进程模拟函数

已有 2275 次阅读 2015-3-22 17:19 |系统分类:教学心得|关键词:学者

园丁一直好奇操作系统的进程和线程之间有着什么样的关系,自创了一个模拟进程和线程的函数,大家可以通过下面的代码清楚地看到,操作系统的进程是如何把一个函数分解成若干个阶段,分时运算的,myThead函数就是一个完整的进程,里面不同的case用于模拟线程
/**********************************************
author:Chen YingPin from Minnan Normal University
date:2015.3.18
功能:自创的多线程进程实现函数:Y=3*x*x+a*b*x+c
****************************************************/
#include <stdio.h>
typedef struct _myTask
{
 struct _coefficient
 {
 int a;
 int b;
 int c;
 } co;
 struct _variable
 {
 int x;
 int y;
 } v;
} myTask;
int myThread(myTask *Task, int *Process)
{
int z;
int ret=1;
switch(*Process)
{
case 0:
Task->v.x=1;
Task->v.y=3;
break;
case 1:
Task->v.y*=Task->v.x;
Task->v.y*=Task->v.x;
break;
case 2:
z=1;
z*=Task->co.a;
z*=Task->co.b;
z*=Task->v.x;
Task->v.y+=z;
break;
case 3:
Task->v.y+=Task->co.c;
break;
}
   (*Process)++;
if(*Process>4)
{
ret=0;
*Process=0;
}
return ret;
}
void InitTask(myTask *Task,int a,int b,int c)
{
Task->co.a=a;
Task->co.b=b;
Task->co.c=c;
}
void main()
{
//OS变量定义区
myTask Task1;
myTask *p=&Task1;
int isTask_1_Living=1;
//线程号
int process=0;
//初始化任务:
InitTask(p,1,1,1);
while(1)
{
        if(isTask_1_Living)  isTask_1_Living=myThread(p,&process);
 else break;
}
printf("%d",p->v.y);
}




https://m.sciencenet.cn/blog-684084-876385.html

上一篇:论MCU(单片机)与CPU程序运行驻地之区别
下一篇:如何有效开展考研英语复习工作

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-3-29 17:04

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部