如何准备好队列和等待队列

时间:2016-11-25 11:24:45

标签: c queue

我是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部分,我添加了其他代码以使我的问题更容易理解。请给我一些提示。我真的很感激。

0 个答案:

没有答案