如何使用pthread从两个数组中查找公用值

问题描述

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

#define MAX_THREAD 4

long long int arr1[100];
long long int arr2[100];

int n,m;
int part = 0;

void* array_search(void* arg){

    int thread_part = part++;

    //printf("%d\n",thread_part);

    if(part==4)
    {
        for(int i = thread_part *(n/4) ; i < n ; i++){
            for(int j = thread_part*(m/4) ; j < m;j++){
                if(arr1[i] == arr2[j]){
                    printf("%lld\n",arr1[i]);
                }
            }
        }
    }
    else{
        for(int i = thread_part *(n/4) ; i < ((thread_part + 1) *(n/4)) ; i++){
            for(int j = thread_part*(m/4) ; j < ((thread_part + 1) *(m/4));j++){
                if(arr1[i] == arr2[j]){
                    printf("%lld\n",arr1[i]);
                }
            }
        }
    }   
}

int main()
{
    printf("Enter the element in First Array:");
    scanf("%d",&n);

    for(int i = 0 ; i < n; i++){
        scanf("%lld",&arr1[i]);
    }   
    printf("Enter the element in Second Array:");
    scanf("%d",&m);
    for(int i = 0 ; i < m; i++){
        scanf("%lld",&arr2[i]);
    }
    pthread_t thread[MAX_THREAD];
    for (int i = 0; i < MAX_THREAD; i++){
        pthread_create(&thread[i],NULL,array_search,(void*)NULL); 
    } 
    for (int i = 0; i < MAX_THREAD; i++){
        pthread_join(thread[i],NULL); 
    }
            
    return 0;
}

实际上我的代码有问题。当我输入以下输入时,它什么也不打印。我不明白为什么会这样。

Enter the element in First Array:3
2000 4000 5000 
Enter the element in Second Array:4
2000 70000 40000 300000
(no output here)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)