面向对象程序设计:基于面向对象操作系统开发平台(OSKit)的分析与程序设计(2)来源: 发布时间:星期四, 2009年2月12日 浏览:32次 评论:0
作者:汤海京 线程分析篇的线程 ![]() 文是 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 前面我们曾经谈到 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 2.1 线程 ![]() 2.1.1线程 ![]() 在OSKit中 ![]() ![]() ![]() ![]() ![]() ![]() ![]() 内核为系统 ![]() 为新线程在线程表项中分配 ![]() ![]() 赋给子线程 ![]() ![]() ![]() ![]() 制作 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 增加和该线程相关 ![]() ![]() ![]() 向父线程返回子线程 ![]() ![]() 系统对 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 2.1.2线程 ![]() OSKit ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 若机器将生成 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 2.1.3线程 ![]() 以下我列出了OSKit中线程 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 为了使各位 ![]() ![]() ![]() ![]() ![]() ![]() queue_chain_t runq; /* 释放队列链 */ pcb_t *ppcb; /* 指向PCB ![]() oskit_u32_t *pstk; /* 指向所分配 ![]() ![]() void *(*func)(void *); /* 指向执行 ![]() ![]() size_t ssize; /* 所分配 ![]() ![]() size_t guardsize; /* 警戒堆栈 ![]() pthread_t tid; /* 线程号 */ oskit_u32_t flags; /* 线程状态标志 */ pthread_lock_t lock; /* 锁 */ queue_chain_t chain; /* 队列链 */ ![]() /*以下用于对死锁 ![]() pthread_mutex_t mutex; /* 互斥位(死锁保护) */ pthread_cond_t cond; /* 等待死锁标志=1 */ ![]() /*例子所用到 ![]() ![]() ![]() ![]() ![]() ![]() oskit_u32_t pctcpu; /* CPU ![]() ![]() ![]() ![]() /*发送信息所用 ![]() pthread_lock_t waitlock; /* 等待锁*/ oskit_u32_t waitflags; /* 等待标志位 */ pthread_cond_t *waitcond; /* 等待条件变量 */ struct osenv_sleeprec *sleeprec; /* ![]() ![]() /*以下是进程通讯要用到 ![]() void *msg; /* 指向要发送 ![]() ![]() oskit_size_t msg_size; /* 消息 ![]() pthread_t tid; /* 线程号 */ void *reply; /* 指向响应信息 ![]() oskit_size_t reply_size; /* 响应内容 ![]() queue_head_t senders; /* 发送队列中 ![]() queue_chain_t senders_chain; /* 发送队列指针 */ /* 以下是所用到 ![]() struct oskit_timer *condtimer; /* 线程 ![]() ![]() ![]() ![]() struct oskit_timer *sleeptimer; /* 以下是所用到 ![]() pthread_lock_t siglock; /* 保护锁信号 */ sig ![]() sig ![]() sig ![]() ![]() oskit_u32_t eip; /* 页处理故障信号 */ /* 键值通常是 ![]() ![]() void *keyvalues[PTHREAD_KEYS_MAX]; /* 键值 */ /* 以下用于清除操作 */ pthread_cleanup_t *cleanups; /* 清楚操作链 */ char cancelstate; /* 取消状态 */ char canceltype; /* 取消类型 */ /* 以下是单独用于调度 ![]() pthread_lock_t schedlock; void *rtai_priv; ![]() ![]() ![]() struct scheduler_entry *scheduler; /* 调度 ![]() ![]() ![]() ![]() ![]() ![]() ![]() oskit_timespec_t start; /* 下次运行 ![]() oskit_timespec_t deadline; /* 下次运行 ![]() oskit_timespec_t period; /* 两次执行见 ![]() queue_head_t waiters; /* 正在等待 ![]() queue_chain_t waiters_chain; /* 线程队列链 */ struct pthread_thread *waiting_for; /* 所等待 ![]() struct pthread_thread *inherits_from; /* 线程从何继承 */ /*以下是CPU ![]() struct pthread_thread *scheduler; /* 线程调度 ![]() schedmsg_t unblockmsg; schedmsg_queue_t *msgqueue; sched_wakecond_t wakeup_cond; /* 唤醒条件 */ schedflags_t schedflags; /* 标志 */ ![]() ![]() ![]() queue_head_t donors; /* 捐赠资源 ![]() queue_chain_t donors_chain; /* 捐赠队列链 */ struct pthread_thread *donating_to; /* 被捐赠 ![]() struct pthread_thread *inherits_from; /* 线程从何继承 */ struct pthread_thread *nextup; /* 下 ![]() ![]() 2.2 pthreads/pthread_create.c 此源码文件包括了 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() 2.2.1 创建线程 介绍说明:这就是我们在第 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() tid: 指向线程存储位置 ![]() attr: 指向线程属性 ![]() *(*function)(void *): 当线程 ![]() ![]() ![]() ![]() *argument: ![]() 2.2.2 创建内部线程 介绍说明:该 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() pthread_thread_t *pthread_create_ ![]() 注:内部线程创建时 ![]() ![]() ![]() 2.2.3 为主进程创建 ![]() 介绍说明:出于系统 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() pthread_thread_t *pthread_init_ ![]() 2.2.4 ![]() ![]() 介绍说明:这和UNIX中那个创建进程 ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() pthread_thread_t *thread_init_ ![]() 2.2.5 为等待和休眠 ![]() ![]() 介绍说明:由于调度 ![]() ![]() ![]() ![]() ![]() ![]() 0
相关文章
读者评论发表评论 |