我是C语言和Linux的新手,英语不是我的母语。提前对不起。
我需要做的是准备好队列和等待队列,并创建我自己的线程api,如thread_create,thread_self,thread_join等。我甚至无法猜测如何开始制作这些。我只是想知道如何使用链表制作就绪队列和等待队列以及如何测试这些队列。
这些都是我现在所拥有的:
-Init.h
#ifndef _INIT_H_
#define _INIT_H_
void Init(void);
#endif
-Init.c
#include "Init.h"
#include "Scheduler.h"
#include "Thread.h"
void Init(void)
{
//create ready queue and waiting queue
//Initialize thread scheduler
}
-Thread.h
#ifndef __THREAD_H__
#define __THREAD_H__
#include<unistd.h>
#define TIMESLICE (2)
typedef void* (*FUNCPTR)(void* arg);
typedef pid_t thread_t;
typedef void thread_attr_t;
typedef enum{
THREAD_STATUS_RUN = 0,
THREAD_STATUS_READY = 1,
THREAD_STATUS_BLOCKED = 2,
}ThreadStatus;
typedef struct _Thread Thread;
typedef struct _Thread {
FUNCPTR entryPt;
void* stackAddr;
int stackSize;
ThreadStatus status;
pid_t pid;
Thread* pPrev;
Thread* pNext;
} Thread;
/* head and tail pointers for ready queue */
Thread* ReadyQHead;
Thread* ReadyQTail;
/* head and tail pointers for waiting queue */
Thread* WaitQHead;
Thread* WaitQTai;
int thread_create(thread_t *thread, thread_attr_t *attr, void *(*start_routine) (void *), void *arg);
int thread_join(thread_t thread, void **retval);
int thread_suspend(thread_t tid);
int thread_resume(thread_t tid);
int thread_cancel(thread_t tid);
thread_t thread_self();
#endif /* __THREAD_H__ */
-Scheduler.c
#include "Init.h"
#include "Thread.h"
#include "Scheduler.h"
int RunScheduler( void )
{
}
void _ContextSwitch(int curpid, int tpid)
{
}
我只是想知道init.c部分,我添加了其他代码以使我的问题更容易理解。请给我一些提示。我真的很感激。