之前已经用过不少在Windows和C++上多多线程编程技术来。
在Linux上原理大致和Windows是相同多。主要多区别在于了解POSIX规范和一些API
参考文档:http://www.cnblogs.com/skynet/archive/2010/10/30/1865267.html
实际上笔者认为创建线程池和使用epoll(windows上的完成端口)可能更适合开发商用应用程序。但是还是需要理解线程同步多本质。
有关线程操作的函数
#include <pthread.h>
int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*func) (void *), void *arg);
int pthread_join (pthread_t tid, void ** status);
pthread_t pthread_self (void);
int pthread_detach (pthread_t tid);
void pthread_exit (void *status);
/*
是否熟悉POSIX多线程编程技术?如熟悉,编写程序完成如下功能:
1)有一int型全局变量g_Flag初始值为0;
2)在主线称中起动线程1,打印“this is thread1”,并将g_Flag设置为1
3)在主线称中启动线程2,打印“this is thread2”,并将g_Flag设置为2
4)线程序1需要在线程2退出后才能退出
5)主线程在检测到g_Flag从1变为2,或者从2变为1的时候退出
*/
/* File: mt.c
multithread demo
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <errno.h>
#include <unistd.h>
// global variable.
int g_Flag = 0;