Click here to Skip to main content
15,895,084 members
Articles / Programming Languages / C++

A Fiber Class (and Friends)

Rate me:
Please Sign up or sign in to vote.
4.91/5 (23 votes)
1 Jul 2008CPOL33 min read 49.6K   453   42  
Fibers are a lightweigtht cooperative threading mechanism, or a coroutine mechanism, depending on how you look at them. Besides providing a very efficient thread-like implementation, fibers allow you to provide "continuations", that is, computations which perform some function, suspend themselves, a
#pragma once
#include "qe.h"

/****************************************************************************
*                                 class Queue
****************************************************************************/

class Queue {
    public:
       Queue() { queueHead = queueTail = emptyFiber = killFiber = NULL; }
    public:
       void appendToQueue(PQE qe);
       PQE removeFromQueue();
    public:
       void next();
       void yield();
    public:
       void kill();
    public:
       void SetEmptyFiber(PQE qe) { emptyFiber = qe; }
    protected:
       PQE queueHead;
       PQE queueTail;
       PQE emptyFiber;
       PQE killFiber;  // used to kill fibers
       PQE killTarget;
    protected:
       static void CALLBACK killer(LPVOID p);
};

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Retired
United States United States
PhD, Computer Science, Carnegie Mellon University, 1975
Certificate in Forensic Science and the Law, Duquesne University, 2008

Co-Author, [i]Win32 Programming[/i]

Comments and Discussions