首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

UNIX编程(12)-线程统制

2012-07-15 
UNIX编程(12)-线程控制1.线程限制某些系统有线程的限制,可以通过sysconf函数来查询2.线程属性如想修改线程

UNIX编程(12)-线程控制

1.线程限制

某些系统有线程的限制,可以通过sysconf函数来查询

2.线程属性

如想修改线程的属性,则可以在pthread_create调用时,传递pthread_attr_t类型指针参数

?

?

pthread_attr_t *restrict * *restrict * *restrict , size_t *restrict , size_t * pthread_mutexattr_t * restrict (pthread_mutexattr_t * pthread_mutexattr_t * restrict *restrict *


2)读写锁属性

?

*(pthread_rwlockattr_t * pthread_rwlockattr_t * restrict (pthread_rwlockattr_t * * pthread_condattr_t * restrict *(* void * *restrict *restrict (*parent)(void), void (*child)(void));

?

Returns: 0 if OK, error number on failure


例:

#include "apue.h"#include <pthread.h>pthread_mutex_t lock1 = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_t lock2 = PTHREAD_MUTEX_INITIALIZER;voidprepare(void){    printf("preparing locks...\n");    pthread_mutex_lock(&lock1);    pthread_mutex_lock(&lock2);}voidparent(void){    printf("parent unlocking locks...\n");    pthread_mutex_unlock(&lock1);    pthread_mutex_unlock(&lock2);}voidchild(void){    printf("child unlocking locks...\n");    pthread_mutex_unlock(&lock1);    pthread_mutex_unlock(&lock2);}void *thr_fn(void *arg){    printf("thread started...\n");    pause();    return(0);}intmain(void){    int         err;    pid_t       pid;    pthread_t   tid;#if defined(BSD) || defined(MACOS)    printf("pthread_atfork is unsupported\n");#else    if ((err = pthread_atfork(prepare, parent, child)) != 0)        err_exit(err, "can't install fork handlers");    err = pthread_create(&tid, NULL, thr_fn, 0);    if (err != 0)        err_exit(err, "can't create thread");    sleep(2);    printf("parent about to fork...\n");    if ((pid = fork()) < 0)        err_quit("fork failed");    else if (pid == 0) /* child */        printf("child returned from fork\n");    else        /* parent */        printf("parent returned from fork\n");#endif    exit(0);}

?9.线程和IO

pread pwrite在多线程环境中非常有帮助

热点排行