Как использовать несколько потоков для нескольких операций чтения / записи файлов в C? - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь проанализировать оптимальное количество потоков, необходимое для выполнения операции чтения / записи большого файла над несколькими файлами.Итак, как мне продолжить создание нескольких потоков и назначить каждому потоку некоторое количество файлов, чтобы ускорить время выполнения?Используемый язык - C

1 Ответ

0 голосов
/ 18 февраля 2019

Изучите https://en.wikipedia.org/wiki/OpenMP для создания потоков и эффективного управления ими для своего анализа.

В вашем случае вы будете использовать несколько отдельных потоков и назначать рабочую нагрузку им или команденитей, которые получат равную долю работы.Примеры ниже:

int main(int argc, char **argv)
{
    // split work in sections
    #pragma omp parallel sections
    {    
        #pragma omp section
        {
            function_1(); // where you perform R/W operations
        }

        #pragma omp section
        {
            function_2(); // where you perform R/W operations or other
        }
    }

    // split work on N threads equally
    #pragma omp parallel
    {
        // where you perform R/W operations
    }
    int threadNum = omp_get_thread_num();
    printf("Number of threads used: %d\n",threadNum);

    /*
    example for loop: if you have 2 threads this work would be split with
    i that runs from 0 to 49999 while the second gets a version running from 50000 to 99999.
    */
    int arr[100000];
    #pragma omp parallel for  
    {
        for (int i = 0; i < 100000; i++) {
          arr[i] = 2 * i;
        }
    }
    int threadNum = omp_get_thread_num();
    printf("Number of threads used: %d\n",threadNum);

    return 0;
}
...