#自定义数据类型-简单模拟进程执行

#include <iostream>
#include <string>
#include <iomanip>
using namespace std;

//定义一个名为process的结构体,用于表示进程相关信息
//包含进程名、进程ID、进程优先级、进程状态、进程所需CPU时间、进程描述等成员
struct process
{
    string pName;
    int pID;
    int pPriority;
    int pState;
    int pCPU;
    string pDescription;
};

int main()
{
    //创建一个包含4个process结构体元素的数组P,并初始化每个元素的各个成员值
    //分别表示不同进程的相关信息,如进程名、ID、优先级等
    process P[4] = {
        { "chrome.exe", 101, 10, 1, 3, "google chrome" },
        { "360.exe", 102, 7, 1, 1, "360 safe protect" },
        { "QQ.exe", 103, 5, 1, 4, "tencet QQ" },
        { "CPPIDE.exe", 104, 3, 1, 2, "CFree 5.0" }
    };

    //外层循环用于遍历每个进程(数组中的每个元素),同时初始化一个时间变量time为0
    for (int i = 0, time = 0; i < 4; i++)
    {
        //将当前进程的状态设置为2
        P[i].pState = 2;

        //内层循环,只要当前进程所需的CPU时间大于0,就持续执行循环体内容
        while (P[i].pCPU > 0)
        {
            //时间变量自增,表示经过了一个时间单位
            time++;
            //当前进程所需的CPU时间减1,表示消耗了一个单位的CPU时间
            P[i].pCPU--;

            //按照指定格式输出当前时间、进程名、进程ID、进程优先级、
            //进程状态、剩余CPU时间以及进程描述信息
            // etw用于设置输出宽度,setfill用于设置填充字符,left表示左对齐输出
            cout << setw(2) << setfill(' ') << left << time
                << ":" << left << setw(12) << P[i].pName
                << setw(5) << P[i].pID
                << setw(3) << P[i].pPriority
                << setw(3) << P[i].pState
                << setw(3) << P[i].pCPU
                << setw(3) << P[i].pDescription
                << "\n";
        }

        //如果当前进程的CPU时间已经消耗完(等于0)
        if (P[i].pCPU == 0)
        {
            //将当前进程的状态设置为3(同样这里具体含义需根据实际定义)
            P[i].pState = 3;
            //按照指定格式输出当前时间、进程名、进程ID、进程优先级、
            //进程状态、剩余CPU时间以及进程描述信息
            cout << setw(2) << setfill(' ') << left << time
                << ":" << left << setw(12) << P[i].pName
                << setw(5) << P[i].pID
                << setw(3) << P[i].pPriority
                << setw(3) << P[i].pState
                << setw(3) << P[i].pCPU
                << setw(3) << P[i].pDescription
                << "\n";
        }
    }

    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值