代码拉取完成,页面将自动刷新
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#define N 4
int A[N][N], sum[N];
void *func(void *arg) // threads function
{
int j, row;
pthread_t tid = pthread_self(); // get thread ID number
row = (int)arg; // get row number from arg
printf("Thread %d [%lu] computes sum of row %d\n", row, tid, row);
for (j=0; j<N; j++) // compute sum of A[row]in global sum[row]
sum[row] += A[row][j];
printf("Thread %d [%lu] done: sum [%d] = %d\n",
row, tid, row, sum [row]);
pthread_exit((void* )0); // thread exit: 0=normal termination
}
int main (int argc, char *argv [])
{
pthread_t thread[N]; // thread IDs
int i, j, r, total = 0;
void *status;
printf("Main: initialize A matrix\n");
for (i=0; i<N; i++){
sum[i] = 0;
for (j=0; j<N; j++){
A[i][j] = i*N + j + 1;
printf("%4d ", A[i][j]);
}
printf("\n");
}
printf("Main: create %d threads\n", N);
for(i=0; i<N; i++){
pthread_create(&thread[i], NULL, func, (void *)i);
}
printf("Main: try to join with threads\n");
for(i=0; i<N; i++) {
pthread_join(thread[i], &status);
printf("Main: joined with %d [%lu]: status=%d\n",
i, thread[i], (int)status);
}
printf("Main: compute and print total sum: ");
for (i=0; i<N; i++)
total += sum[i];
printf("tatal = %d\n", total);
pthread_exit(NULL);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。