// g++ $(pkg-config --cflags --libs glibmm-2.4 gthread-2.0) thread.cpp
// ./a.out

#include <sigc++/signal.h>
#include <sigc++/trackable.h>
#include <sigc++/connection.h>
#include <glibmm/thread.h>
#include <cstdio>

void function2()
{
	int c = 0;
	for (int j = 0; j < 20; j++)
		for (int i = 0; i < 1000000000; i++)
			if (i % 50000000 == 0) printf("\t\tthread 2 = %d\n", ++c);
}

void function3()
{
	int c = 0;
	for (int j = 0; j < 20; j++)
		for (int i = 0; i < 1000000000; i++)
			if (i % 50000000 == 0) printf("\t\t\t\tthread 3 = %d\n", ++c);
}

main()
{
	Glib::Thread* thread2;
	Glib::Thread* thread3;

	if (!g_thread_supported())
		Glib::thread_init();

	thread2 = Glib::Thread::create(sigc::ptr_fun(function2), true);
//	thread3 = Glib::Thread::create(sigc::ptr_fun(function3), true);

	int c = 0;
	for (int j = 0; j < 20; j++)
		for (int i = 0; i < 1000000000; i++)
			if (i % 50000000 == 0) printf("parent = %d\n", ++c);
}
