Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <pthread.h>
- #include <stdio.h>
- #include <stdlib.h>
- #define N 5
- struct Matrix{
- int mat[N][N];
- int red;
- int sum;
- };
- void createMatrix(struct Matrix *data){
- int i=0;
- int j=0;
- for(i=0;i<N;i++){
- for(j=0;j<N;j++){
- data->mat[i][j]=i+j;
- printf("%d ", data->mat[i][j]);
- }
- printf(" \n");
- }
- }
- void *sumRed(void *data){
- int i = 0;
- struct Matrix *ndata = data;
- int sumaPrev = ndata->sum;
- for(i = 0; i<N;i++){
- ndata->sum+=ndata->mat[ndata->red][i];
- }
- int newsum = ndata->sum;
- printf("\n Suma %d red: %d \n",ndata->red, newsum-sumaPrev);
- }
- int main() {
- pthread_t threads[N];
- int rc;
- int i=0;
- struct Matrix data;
- createMatrix(&data);
- data.sum = 0;
- for(i=0;i<N;i++){
- data.red = i;
- rc = pthread_create(&threads[i], NULL, sumRed, (void*)&data);
- pthread_join(threads[i], NULL);
- if (rc){
- printf("ERROR; return code from pthread_create() is %d\n", rc);
- exit(-1);
- }
- }
- printf("\nUkupna suma: %d \n", data.sum);
- pthread_exit(NULL);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement