파일로 스레딩

매트
#include<pthread.h>
    #include<iostream>
    #include<fstream>
    #include<sstream>
    #include<vector>
    #include<algorithm>

    using namespace std;
    pthread_t threads[10];
    pthread_mutex_t mut;

    void *print(void *fname){
            char *filename=(char*)fname;
            ifstream file;
            vector<string> lines;
            file.open("argi.txt");
            pthread_mutex_lock(&mut);

            while(file.is_open()){
                    string line;
                    while(getline(file,line)){
                            lines.push_back(line);
                    }
            file.close();
            }
            int i;

                for(i=lines.size()-1;i>=0;i--)            
                cout<<lines[i]<<endl;

            pthread_mutex_unlock(&mut);
            pthread_exit(NULL);
            return NULL;
    }


    int main(int argc, char** argv){

            pthread_mutex_init(&mut,NULL);
            for(int i=1;i<argc;i++){

                    pthread_create(&threads[i],NULL,print,(void*)argv[i]);
            }
            for(int i=1;i<argc;i++)
                    pthread_join(threads[i],NULL);
            pthread_mutex_destroy(&mut);

            return 0;}

이제 이것은 n 개의 파일 이름을 가져야합니다. 각 파일에 대해 스레드가 생성되고 파일의 행을 역순으로 표시합니다. ./a.out arg1.txt arg2.txt내가 사용하고있는 명령은 읽을 수없는 문자 화면입니다. 2 개의 파일이 존재하고 각 파일에는 5 줄의 텍스트가 있습니다.이 문제가 무엇이며 어떻게 해결할 수 있습니까?

사용자 4815162342

귀하의 print기능을 여는 "argi.txt"대신 filename, 발신자로부터받은 파일 이름을. 이 수정으로 귀하의 프로그램이 저에게 적합합니다.

추가 설명 :

  • 스레드를 효과적으로 직렬화하므로 전체 함수 주변의 뮤텍스를 제거해야합니다. 병렬 실행의 가능성이 없으면 스레드 사용의 전체 요점이 누락됩니다.

  • pthread_exit()어쨌든 스레드 함수가 반환되기 직전에 호출하는 것은 불필요하며 제거 할 수 있습니다.

  • 전역 pthread 뮤텍스는 PTHREAD_MUTEX_INITIALIZER매크로를 사용하여 초기화 할 수 있으며 ,이 경우 pthread_mutex_init및을 호출 할 필요가 없습니다 pthread_mutex_destroy.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다중 스레딩 및 파일 읽기

분류에서Dev

인플레 이스 파일 인코딩

분류에서Dev

스레딩 메모리 프로파일 링

분류에서Dev

스레딩 메모리 프로파일 링

분류에서Dev

파이썬. 스레딩

분류에서Dev

QThread : GUI 파이썬으로 스레딩

분류에서Dev

Python으로 스레딩

분류에서Dev

asyncio 문제로 스레딩

분류에서Dev

Clojure 스레딩 매크로

분류에서Dev

for 루프로 스레딩

분류에서Dev

Python에서 NCBI 파일을 다운로드하기위한 멀티 스레딩

분류에서Dev

다중 스레딩을 사용하여 Java에서 파일 다운로드

분류에서Dev

다중 스레딩을 사용하여 파일에서 데이터로드

분류에서Dev

Python-다중 스레딩 도움말-여러 파일 읽기-SQL Server로 ETL

분류에서Dev

Pickle 및 파일 잠금을 사용하여 멀티 스레딩에서 파일로드 및 덤프-IOError : [Errno 13]

분류에서Dev

장고 테스트 로딩 CSS 파일

분류에서Dev

레일스 모델 파일 경로

분류에서Dev

스레드에서 스레딩으로 마이그레이션

분류에서Dev

파이썬 스레딩 어려움

분류에서Dev

파이썬 스레딩 추측 게임

분류에서Dev

하이퍼 스레딩 및 CPU 바인딩 프로세스

분류에서Dev

python3 다중 스레딩 파일에 쓰기

분류에서Dev

Julia에서 CSV 파일 읽기를위한 다중 스레딩

분류에서Dev

여러 파일 복사본에 멀티 스레딩 사용

분류에서Dev

여러 파일에서 Python 멀티 스레딩

분류에서Dev

xls 파일에 쓸 때 오류-Apache POI 멀티 스레딩

분류에서Dev

bash의 txt 파일에서 다중 읽기 (스레딩)

분류에서Dev

파일을 다운로드하기 위해 파이썬에서 다중 처리 / 다중 스레딩

분류에서Dev

파이썬에서 멀티 스레딩을 사용하여 파일 다운로드

Related 관련 기사

뜨겁다태그

보관