posix 다중 루틴 유감 - 루틴 고급 프로그래밍 (루틴 속성 함수 총결산)
pthread_attr_t
등록 정보
값
결실
scope
PTHREAD_SCOPE_PROCESS
새로운 라인은 프로세스 중의 다른 라인과 경쟁을 일으킨다.
detachstate
PTHREAD_CREATE_JOINABLE
스레드가 종료되면 완료 상태와 스레드 ID가 유지됩니다.
stackaddr
NULL
새 스레드는 시스템이 분배한 창고 주소를 가지고 있습니다.
stacksize
1M
새 스레드는 시스템이 정의한 창고 크기를 가지고 있습니다.
priority
0
새 라인의 우선 순위는 0입니다.
inheritsched
PTHREAD_EXPLICIT_SCHED
새 스레드는 부모 스레드 스케줄링 우선순위를 계승하지 않습니다.
schedpolicy
SCHED_OTHER
새 스레드는 Solaris를 사용하여 정의된 고정 우선 순위를 동기화 객체에 경합합니다.스레드가 점령되거나 스레드가 막히거나 정지될 때까지 계속 운행될 것입니다.
guardsize
PAGESIZE(4M)
새 스레드는 시스템이 정의한 창고 넘침 보호구역 크기를 가지고 있습니다
1、
int pthread_attr_init(pthread_attr_t *attr);
: 0,
: attr
:Posix pthread_attr_t scope 、detach 、 、 、 。
pthread_attr_init 。
2、
int pthread_attr_destroy(pthread_attr_t *attr);
: 0,
:attr
: pthread_attr_destroy pthread_attr_t pthread_create , 。
3、 CPU
int pthread_attr_getaffinity_np(pthread_attr_t *attr, size_t cpusetsize, cpu_set_t *cpuset);
: 0,
:attr
: CPU
4、 CPU
int pthread_attr_setaffinity_np(pthread_attr_t *attr, size_t cpusetsize, const cpu_set_t *cpuset);
: 0,
:attr
cpusetsize CPU
cpuset CPU
: cupset CPU
5、
int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate);
: 0,
: attr
detachstate
:
6、
int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);
: 0,
:attr
detachstat
PTHREAD_CREATE_DETACHED( )
PTHREAD_CREATE_JOINABLE( )
: Pthreads detachstate , PTHREAD_CREATE_DETACHED( ) PTHREAD_CREATE_JOINABLE( )。 , , pthread_create ID , 。
7、
int pthread_attr_getguardsize(pthread_attr_t *attr, size_t *guardsize);
: 0,
: attr
guardsize
: 。 , guardsize :
4 오버플로우 보호는 시스템 자원의 낭비를 초래할 수 있다.만약 프로그램이 대량의 루트를 만들고, 이 루트가 창고에 영원히 넘치지 않을 것을 알았다면, 넘침 보호 구역을 닫을 수 있습니다.오버플로우 보호 영역을 닫으면 시스템 자원을 절약할 수 있습니다 4 스레드가 창고에 대형 데이터 구조를 분배할 때 비교적 큰 넘침 보호 구역이 창고의 넘침을 측정해야 할 수도 있다 guardsize 。 , 。 , 。 , SIGSEGV 。
8、
int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);
: 0,
:attr
guardsize
: 。 guardsize , attr 。 guardsize , attr guardsize 。 , 。 guardsize PAGESIZE 。 sys/mman.h PAGESIZE。
9、
int pthread_attr_getscope(pthread_attr_t *attr, int *scope);
: 0,
:attr
scope
:
10、
int pthread_attr_setscope(pthread_attr_t *attr, int scope);
: 0,
:attr
guardsize ,
PTHREAD_SCOPE_SYSTEM
PTHREAD_SCOPE_PROCESS
:
11、 ( )
int pthread_attr_getstack(pthread_attr_t *attr, void **stackaddr, size_t *stacksize);
: 0,
:attr
stackaddr
stacksize
:
12、 ( )
int pthread_attr_setstack(pthread_attr_t *attr, void *stackaddr, size_t stacksize);
: 0,
:attr
stackaddr ( ): , posix_memalign 。 stackaddr , NULL, , stacksize。
stacksize :
: , pthread_attr_setguardsize 。
13、
int pthread_attr_getstackaddr(pthread_attr_t *attr, void **stackaddr);
: 0,
:attr
stackaddr
: , pthread_attr_getstack
14、
int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr);
: 0,
:attr
stackaddr
: , pthread_attr_setstack 。
15、
int pthread_attr_getstacksize(pthread_attr_t *attr, size_t *stacksize);
: 0,
:attr
stacksize
: 。 。Pthreads PTHREAD_STACK_MIN , , #include <limits.h> 。 :#ulimit -s #ulimit -a stack size 。#ulimit -s value stack 。 8M, 16384 。
: , 。 。 。 SIGSEGV 。 , 。 , PTHREAD_CREATE_JOINABLE 。 pthread_join , 。 , 。 , 。 1 MB( 32 ) 2 MB( 64 ) , 。 mmap() MAP_NORESERVE 。 / 。 。
16、
int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);
: 0,
:attr
stacksize ( ): 。( )。stacksize 。stacksize 。 stacksize , 。 , 。
: 。
17、
int pthread_attr_getschedpolicy(pthread_attr_t *attr, int *policy);
: 0,
: attr
policy
:
18、
int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);
: 0,
:attr
policy , :
SCHED_FIFO
SCHED_RR , FIFO,
SCHED_OTHER 。 , SCHED_FIFO SCHED_RR , 1 99, .
: SCHED_FIFO , 。SCHED_RR 。 SCHED_FIFO SCHED_RR , 。 , SCHED_FIFO SCHED_FIFO , , 。
:
19、
int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);
: 0,
:attr
param , ,
struct sched_param
{
int sched_priority; /* Scheduling priority */
};
:
20、
int pthread_attr_getschedparam(pthread_attr_t *attr, struct sched_param *param);
: 0,
:attr
param
:
21、
int pthread_attr_getinheritsched(pthread_attr_t *attr, int *inheritsched);
: 0,
:attr
guardsize
PTHREAD_INHERIT_SCHED: ,attr
PTHREAD_EXPLICIT_SCHED attr
:
: , inheritsched ( :PTHREAD_EXPLICIT_SCHED)。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.