亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何在C語言中實現多線程因子分解

小樊
83
2024-09-12 12:31:04
欄目: 編程語言

在C語言中,可以使用POSIX線程庫(pthread)來實現多線程因子分解

#include<stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <math.h>

typedef struct {
    int number;
    int start;
    int end;
} FactorData;

void *find_factors(void *arg) {
    FactorData *data = (FactorData *)arg;
    int number = data->number;
    int start = data->start;
    int end = data->end;

    for (int i = start; i <= end; i++) {
        if (number % i == 0) {
            printf("Thread %lu: %d is a factor of %d\n", pthread_self(), i, number);
        }
    }

    return NULL;
}

int main() {
    int number;
    printf("Enter the number to be factorized: ");
    scanf("%d", &number);

    int num_threads = 4;
    pthread_t threads[num_threads];
    FactorData data[num_threads];

    int range = (int)sqrt(number) / num_threads;

    for (int i = 0; i < num_threads; i++) {
        data[i].number = number;
        data[i].start = i * range + 1;
        data[i].end = (i + 1) * range;
        pthread_create(&threads[i], NULL, find_factors, (void *)&data[i]);
    }

    for (int i = 0; i < num_threads; i++) {
        pthread_join(threads[i], NULL);
    }

    return 0;
}

這個程序首先接收一個整數輸入,然后創建4個線程。每個線程負責查找一部分范圍內的因子。線程之間不會重復查找因子。最后,主線程等待所有子線程完成任務。

0
榆林市| 扶沟县| 大埔县| 木里| 浮梁县| 千阳县| 大名县| 临夏市| 安多县| 天津市| 三门峡市| 澄迈县| 原平市| 东辽县| 璧山县| 土默特左旗| 石城县| 酉阳| 托克托县| 上蔡县| 临颍县| 临湘市| 雷山县| 汉源县| 布拖县| 奉节县| 神农架林区| 上虞市| 邯郸市| 甘德县| 永川市| 谢通门县| 巧家县| 陆良县| 安仁县| 桦川县| 唐海县| 荥阳市| 莆田市| 得荣县| 伊金霍洛旗|