GThreadPool 을 사용하는 간단한 예제
#define G_THREADS_ENABLED
#include <gtk/gtk.h>
#include <glib.h>
#include <stdio.h>
#include <assert.h>
#include <time.h>
#include <stdlib.h>
#include <pthread.h>
void threadPool(gpointer data, gpointer user_data);
typedef struct _UserData
{
int iIndex;
int iData;
} UserData;
int main()
{
srand(time(NULL));
g_thread_init(NULL);
UserData commonData;
commonData.iIndex = 4141;
commonData.iData = 9153;
GError * error;
GThreadPool * tp = g_thread_pool_new(threadPool, &commonData, 5, TRUE, &error);
assert(tp);
if ( tp )
{
g_print("GThreadPool is initializedn");
}
UserData aData;
aData.iIndex = rand();
aData.iData = rand();
int i = 0;
for ( i = 0; i < 100; ++i)
{
g_thread_pool_push(tp, &aData, &error);
aData.iIndex = rand();
aData.iData = rand();
}
g_thread_pool_free(tp, FALSE, TRUE);
g_print("All Thread pool is ended and freed.n");
return 0;
}
void threadPool(gpointer data, gpointer user_data)
{
UserData * p = data;
g_print("iIndex : %d, iData : %dn", p->iIndex, p->iData);
}