How to "multithread" C code
c, multithreading
Solution
One alternative to multithread your code would be using pthreads ( provides more precise control than OpenMP ).
Assuming `x`, `y` & `result` are global variable arrays,
#include <pthread.h>
...
void *get_result(void *param) // param is a dummy pointer
{
...
}
int main()
{
...
pthread_t *tid = malloc( ntimes * sizeof(pthread_t) );
for( i=0; i<ntimes; i++ )
pthread_create( &tid[i], NULL, get_result, NULL );
... // do some tasks unrelated to result
for( i=0; i<ntimes; i++ )
pthread_join( tid[i], NULL );
...
}
(Compile your code with `gcc prog.c -lpthread`)
Problem
I have a number crunching application written in C. It is kind of a main loop that for each value calls, for increasing values of "i", a function that performs some calculations. I read about multithreading, and I am considering learning a bit about it, in C. I wonder if somehow general code like mine could be automatically multithreaded and how. Thanks P.D. To get an idea about my code, let's say that it is something like this: ``` main(...) for(i=0;i<=ntimes;i++)get_result(x[i],y[i],result[i]); ``` ... ``` void get_result(float x,float y,float result){ result=sqrt(log (x) + log (y) + cos (exp (x + y)); (and some more similar mathematical operations) } ```