summaryrefslogtreecommitdiff
path: root/obsolete/geneticthread.c
diff options
context:
space:
mode:
Diffstat (limited to 'obsolete/geneticthread.c')
-rw-r--r--obsolete/geneticthread.c62
1 files changed, 62 insertions, 0 deletions
diff --git a/obsolete/geneticthread.c b/obsolete/geneticthread.c
new file mode 100644
index 0000000..33520a6
--- /dev/null
+++ b/obsolete/geneticthread.c
@@ -0,0 +1,62 @@
+/*
+ * This is a python module implementing real threads.
+ */
+#include <Python.h>
+#include <pthread.h>
+
+/**
+ * Callback for the thread. Just calls the argument's python function.
+ */
+static void * thread_cb (void * arg)
+{
+ PyObject * arglist;
+
+ arglist = Py_BuildValue("()",NULL);
+ PyEval_CallObject((PyObject*)arg, arglist);
+ Py_DECREF(arglist);
+ Py_DECREF((PyObject*)arg);
+
+ return NULL;
+}
+
+/**
+ * Function called from the python application.
+ */
+static PyObject * thread_start (PyObject * self, PyObject *args)
+{
+ PyObject *temp;
+ pthread_t ID;
+
+ if (PyArg_ParseTuple(args, "O:thread_start", &temp)) // get argument
+ {
+ if (!PyCallable_Check(temp)) // not callable
+ {
+ PyErr_SetString(PyExc_TypeError, "parameter must be callable");
+ return NULL;
+ }
+ Py_INCREF(temp); /* Add a reference to new callback */
+ int status = pthread_create(&ID, NULL, thread_cb, (void*) temp);
+ if (status)
+ {
+ PyErr_SetString(PyExc_SystemError, "error during thread start");
+ return NULL;
+ }
+ }
+
+ Py_RETURN_NONE;
+}
+
+static PyMethodDef ThreadMethods[] = {
+ {"thread_start", thread_start, METH_VARARGS,
+ "Start a new thread."},
+ {NULL, NULL, 0, NULL} /* Sentinel */
+};
+
+/**
+ * Init function.
+ */
+PyMODINIT_FUNC
+initgeneticthread(void)
+{
+ (void) Py_InitModule("geneticthread", ThreadMethods);
+}
>changed design / added linknecoro2-34/+27 2007-07-25changed design / added linknecoro5-86/+188 2007-07-24made the resume_loop-plugin change titles toonecoro5-7/+22 2007-07-21added logviewersnecoro7-215/+429 2007-07-21updated howtonecoro1-14/+24 2007-07-20new Plugin Schemenecoro1-5/+4 2007-07-20new Plugin Schemenecoro1-1/+1 2007-07-20new Plugin Schemenecoro9-162/+214 2007-07-13fixesnecoro4-27/+37 2007-07-13new fancier log outputnecoro14-127/+116 2007-07-11added SIGSTOP/SIGCONT support; SIGTERM now works ;)necoro8-208/+275 2007-07-09bug in shutdown pluginnecoro2-5/+12 2007-07-09added resume_loop pluginnecoro1-1/+1 2007-07-09added resume_loop pluginnecoro10-22/+162 2007-07-07some more documentationnecoro6-4/+108 2007-07-07Some documentation worknecoro7-18/+129