公 告

欢迎各位网友添加友情链接,在您添加本博客:http://linux0818.blogspot.com/ 做为链接后, E-mail:linux0818@gmail.com给我,我将将您的网址添加到本博客。

2008年10月23日星期四

单线程的编写

源代码:
#include <stdio.h>
#include <pthread.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <linux/unistd.h>
#include <sys/types.h>

void *pthread_function(void *arg);

int main(int argc, char **argv)
{
    pthread_t mythread;
    if (pthread_create(&mythread, NULL, pthread_function, NULL)) {      /* 创建线程 */
        printf("strerror(errno)\n");
        abort();
    }
    if (pthread_join(mythread, NULL)) { /* 等待线程结束 */
        printf("error joining thread.");
        abort();                /* 不正常程序终止   exit:正常程序的终止 */
    }
    return 0;
}

void *pthread_function(void *arg)
{
    int i;
    _syscall0(pid_t, gettid);
    printf("my pthread ID is:%ld\n", gettid());
    for (i = 0; i < 10; i++) {
        printf("hello,%d!\t", i);
        fflush(stdout);         /* 将用户空间数据强制输出,内核以回车当作一次输出,如没有回车内核会把要输出的数据等到程序结束后一起输出。 */
        sleep(1);
    }
    printf("\n");
    return NULL;
}

编译: gcc    my_pthread.c    -lpthread   -Wall
运行:. /a.out
结果:(运行期间可用ps  -eLf 查看线程的ID号)
my pthread ID is:14316
hello,0!        hello,1!        hello,2!        hello,3!        hello,4!        hello,5!        hello,6!      hello,7! hello,8!        hello,9!



--
/**************************************/
Name: Xiong Feng
E-mail:linux0818@gmail.com
MSN:linux0818@hotmail.com
QQ:23562033
Address: GuangZhou.China
/**************************************/

没有评论:

发表评论