it works, yo

Original commit message from CVS:
it works, yo
This commit is contained in:
Andy Wingo 2002-01-28 01:56:17 +00:00
parent b0e9344c56
commit ca06615762
3 changed files with 55 additions and 1 deletions

View file

@ -12,13 +12,15 @@ libgstcothreads_la_SOURCES = cothreads.c cothread-stack.c cothreads.h
libgstcothreads_la_LIBADD = libpth-mctx.la $(GLIB_LIBS)
libgstcothreads_la_CFLAGS = $(GLIB_CFLAGS)
noinst_PROGRAMS = test-pth test-pth-pthreads test-pthreads test-pth-pthreads2
noinst_PROGRAMS = test-pth test-pth-pthreads test-pthreads test-pth-pthreads2 test-cothreads
noinst_HEADERS = linuxthreads.h cothreads-private.h cothreads.h
test_pth_LDADD = libpth-mctx.la
test_pth_pthreads_LDADD = libpth-mctx.la -lpthread
test_pthreads_LDADD = -lpthread
test_pth_pthreads2_LDADD = -lpthread libpth-mctx.la
test_cothreads_CFLAGS = $(GLIB_CFLAGS)
test_cothreads_LDADD = libgstcothreads.la
BUILT_SOURCES = pth_p.h

View file

@ -21,6 +21,7 @@
#include "cothreads-private.h"
#define HAVE_LINUXTHREADS
#ifdef HAVE_LINUXTHREADS
static cothread_attr cothread_attr_default =

View file

@ -0,0 +1,51 @@
#include <cothreads.h>
cothread *main_context;
cothread *ctx;
int threadnum = 0;
void co_thread (void)
{
printf ("1.%d: sleeping 1s in thread %d...\n", threadnum, threadnum);
sleep (1);
printf ("1.%d: returning to cothread 0\n", threadnum);
cothread_switch (ctx, main_context);
}
void pthread (void* unused)
{
char *skaddr;
printf ("1: saving the main context\n");
main_context = cothread_init(NULL);
while (threadnum < 25) {
printf ("1: spawning a new cothread\n");
ctx = cothread_create (co_thread);
printf ("1: switching to cothread %d...\n", ++threadnum);
cothread_switch (main_context, ctx);
printf ("1: back now, looping\n");
}
}
int main (int argc, char *argv[])
{
GThread *thread;
g_thread_init(NULL);
printf ("0: creating the gthread\n");
thread = g_thread_create (pthread, NULL, TRUE, NULL);
printf ("joining the gthread\n");
g_thread_join (thread);
printf ("exiting\n");
exit (0);
}