Linux 시스템 에서 분리 스 레 드 사용
4103 단어 linux
요약: LINUX 다 중 스 레 드 프로 그래 밍 에서 스 레 드 를 분리 하 는 개념 을 간략하게 소개 하고 pthread 라 이브 러 리 를 사용 할 때 분리 스 레 드 를 사용 해 야 한 다 는 개념 을 제시 했다.
프로그램 인 스 턴 스
키워드: 분리 스 레 드, detach, pthreadcreate,pthread_detach,ENOMEM,12
스 레 드 는 일반적으로 분리 와 비 분리 두 가지 상태 가 있다.기본 적 인 상황 에서 비 분리 상태 입 니 다. 부모 스 레 드 는 하위 스 레 드 의 일부 정 보 를 유지 하고 있 습 니 다.
하위 스 레 드 가 끝 날 때 까지 기 다 립 니 다. join 호출 이 표시 되 지 않 은 상태 에서 하위 스 레 드 가 끝 날 때 부모 스 레 드 유지 에 대한 정보 가 제때에 풀 리 지 않 을 수 있 습 니 다.
놓 습 니 다. 부모 스 레 드 에 비 분리 상태의 하위 스 레 드 를 대량으로 만 들 면 (LINUX 시스템 에서 pthread create 함 수 를 사용) 표 가 생 길 수 있 습 니 다.
오류 의 반환 값 12, 즉 ENOMEM (errno. h 에서 정의) 은 스 택 공간 이 부족 하 다 는 것 을 나타 낸다.분리 라인 에 대해 서 말하자면, 다른 것 은 없 을 것 이다
스 레 드 가 끝 날 때 까지 기 다 립 니 다. 실행 이 끝 난 후에 스 레 드 가 종료 되 고 자원 이 제때에 방출 됩 니 다.
pthread 를 방지 하기 위해create 스 레 드 는 반환 값 12 (즉 ENOMEM) 의 오류 가 발생 했 습 니 다. 다음 과 같은 방식 으로 하 는 것 을 권장 합 니 다.
분리 상태의 스 레 드 를 만 듭 니 다!
#include <errno.h>
#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
//
void *func(void *arg)
{
int i = *(int *)(arg);
printf("I'am worker:%d
",i);
}
int main()
{
pthread_t tid; // id
//
int count = 10000;//
for(int j=0 ; j < count ; ++j)
{
//
int * p = new int(j);
//
int ret= pthread_create(&tid, NULL, func, (void*)p);
if( ret )//
{
printf("create thread error:%d
",ret);
}
else//
{
// stack
pthread_detach(tid);
}
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
용감한 바로 가기 및 우분투 응용 프로그램안녕하세요 여러분, 이 기사에서는 모든 사이트에서 pwa를 생성하고 실행기 응용 프로그램으로 추가하는 방법을 설명하고 싶습니다. 일부 웹사이트는 PWA로 설치를 허용하지 않지만 유사한 애플리케이션을 원합니다. 1. ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.