mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-17 12:55:53 +00:00
it works, yo
Original commit message from CVS: it works, yo
This commit is contained in:
parent
b0e9344c56
commit
ca06615762
3 changed files with 55 additions and 1 deletions
|
@ -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
|
||||
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
|
||||
#include "cothreads-private.h"
|
||||
|
||||
#define HAVE_LINUXTHREADS
|
||||
|
||||
#ifdef HAVE_LINUXTHREADS
|
||||
static cothread_attr cothread_attr_default =
|
||||
|
|
51
gst/cothreads/test-cothreads.c
Normal file
51
gst/cothreads/test-cothreads.c
Normal 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);
|
||||
}
|
||||
|
Loading…
Reference in a new issue