/* Lecture_1/hw3.c
 * James S. Plank

Continuation-Based Thread Library - A non-preemptive, continuation-based thread library.
Copyright (C) 2009 James S. Plank

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Original: October, 1995
Revised: January, 2009

James S. Plank
Department of Electrical Engineering and Computer Science
University of Tennessee
Knoxville, TN 37996
plank@cs.utk.edu
*/

#include <stdio.h>
#include <stdlib.h>
#include "cbthread.h"

void hw(int *v)
{
  printf("Thread %d: Hello World\n", *v);
}

void finish()
{
  printf("All threads are finished.\n");
}

main()
{
  void *t;
  int i;
  int args[5];

  for (i = 0; i < 5; i++) {
    args[i] = i;
    t = cbthread_fork(hw, args+i);
  }
  printf("All threads forked.\n");
  cbthread_joinall(finish, NULL);
} 

