⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 thread.c

📁 《Linux程序设计权威指南》源代码
💻 C
字号:
	/* File: thread.c */	#include <pthread.h>	#include <gtk/gtk.h>	GtkWidget *clist;	//增加四行两列的列表	gchar *card[4][3] = { 		{ "赵凯",    "68001234",	"" },		{ "李小三",  "022-6234567",	"" },		{ "王老五",  "13601111111",	"" },		{ "严新",    "66054321",	"" } };		pthread_t thread1, thread2;	pthread_mutex_t mutex;	void thread_add_item(void *ptr)	{		int idx;		while(1){			idx = (int)random()%4;			sleep((int)random()%2 + 2);			pthread_mutex_lock(&mutex);			card[idx][2] = (char *)ptr;			gtk_clist_append(GTK_CLIST(clist), card[idx]); 			pthread_mutex_unlock(&mutex);		}	}	int main( int argc, gchar *argv[] )	{		int i, row;		GtkWidget *window;		GtkWidget *vbox;		GtkWidget *scrolled_window;	//clist的滚动窗口		//标题		gchar *titles[3] = { "姓名", "电话号码", "住址" };		//初始化		gtk_set_locale();		g_thread_init(NULL);		gtk_init(&argc, &argv);     		//顶级窗口		window=gtk_window_new(GTK_WINDOW_TOPLEVEL);		//设置窗口的尺寸		gtk_widget_set_usize(GTK_WIDGET(window), 400, 250);		//窗口标题		gtk_window_set_title(GTK_WINDOW(window), "GtkCList演示");		gtk_signal_connect(GTK_OBJECT(window), "destroy",                        GTK_SIGNAL_FUNC(gtk_main_quit), NULL);		//容器容纳滚动窗口和按钮		vbox=gtk_vbox_new(FALSE, 5);		gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);		gtk_container_add(GTK_CONTAINER(window), vbox);		gtk_widget_show(vbox); 		//滚动窗口		scrolled_window = gtk_scrolled_window_new (NULL, NULL);		//滚动窗口的滚动规则, 本例中水平方向永远含滚动条,		//垂直方向的自动条是自动的		gtk_scrolled_window_set_policy(			GTK_SCROLLED_WINDOW (scrolled_window),			GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);		//把滚动窗口放到容器中		gtk_box_pack_start(GTK_BOX(vbox), scrolled_window,TRUE,TRUE,0);		gtk_widget_show (scrolled_window);		//建立两列的带标题的CList		clist = gtk_clist_new_with_titles( 3, titles);		//设置阴影类型		gtk_clist_set_shadow_type (GTK_CLIST(clist), GTK_SHADOW_OUT);		//设置列的宽度(列数是从0开始的)		gtk_clist_set_column_width (GTK_CLIST(clist), 0, 60);		gtk_clist_set_column_width (GTK_CLIST(clist), 1, 100);		//添加行		for (i=0 ; i < 4 ; i++ ){			row = gtk_clist_append(GTK_CLIST(clist), card[i]); 		}		//把CList加到滚动窗口中		gtk_container_add(GTK_CONTAINER(scrolled_window), clist);		gtk_widget_show(clist);		gtk_widget_show(window);		//建立线程		pthread_mutex_init(&mutex, NULL);		pthread_create(&thread1, NULL, 			(void *)thread_add_item, (void *)"线程1");		pthread_create(&thread2, NULL, 			(void *)thread_add_item, (void *)"线程2");		gdk_threads_enter();		gtk_main(); 		gdk_threads_leave();		pthread_mutex_destroy(&mutex);		return(0);	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -