开发者

multithreading function calls

i have an array of structures with fields of data and fields with pointers to functions.

what i'm doing now is cycling through array and calli开发者_如何学Cng each registered function.

what i need is for each of element in my structures array call registered function in a separate independent thread.

i can post an code example also if needed. sorry for my english :)

posting code:

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

#define NTHREAD 3

struct server_t {
    char *name;

    int (*triggered)(struct server_t *);
};

typedef struct server_t server_t;

int triggered1(struct server_t * server)
{
    if  (time(NULL) % 1 == 0) {
        printf("%s\n", __FUNCTION__);
        pthread_exit(0);
        return 0;
    } else {
        return -1;
    }
}

int triggered2(struct server_t * server)
{
    if  (time(NULL) % 2 == 0) {
        printf("%s\n", __FUNCTION__);
        pthread_exit(0);
        return 0;
    } else {
        return -1;
    }
}

int triggered3(struct server_t * server)
{
    if  (time(NULL) % 5 == 0) {
        printf("%s\n", __FUNCTION__);
        pthread_exit(0);
        return 0;
    } else {
        return -1;
    }
}

int main()
{
    pthread_t threads[NTHREAD];
    int  iret[NTHREAD]; int i = 0;
    server_t servers[] = {
        {"server1", triggered1},
        {"server2", triggered2},
        {"server3", triggered3},
    };

    /* 
       So, i have an array of structures. AND i have a main loop. 
       i want to create thread for each element of array, pass 
       structure's "triggered" function as start routine for it. 
       AND i need this start routine to periodically check for something. 
       So below some kind of an em.. code, that supposed to be.
    */

    <create_threads(&servers);> // this function must create thread for each element of array
                                //with structure's "triggered" function as a start routine
                                //argument

    /* after what threads are running and checking what they needed in an infinite loop. */

   // ?maybe some code here?
    return 0;
}


Here is a very good, basic pthreads example, which should get you going: https://computing.llnl.gov/tutorials/pthreads/#CreatingThreads

Basically all you need to do is loop through your function-pointer-array and execute the functions according to the said example.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜