Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

There is probably a memory leak #1

Open
Slontia opened this issue Feb 5, 2021 · 0 comments
Open

There is probably a memory leak #1

Slontia opened this issue Feb 5, 2021 · 0 comments

Comments

@Slontia
Copy link

Slontia commented Feb 5, 2021

I removed the condition in for-loop in threadpool_example.c to make an infinite loop and then the used memory is continuously rising. Is it the normal situation?

#include <stdio.h>
#if defined __GNUC__ || defined __CYGWIN__ || defined __MINGW32__ || defined __APPLE__
#include <pthread.h>
#elif defined _WIN32 || _WIN64
#include <windows.h>
#include <Windows.h>
#endif
#include "at_thpool.h"


#define TASK_SIZE 200

void t1(void *arg);
void t2(void *arg);
void t3(void *arg);
void t4(void *arg);

void t1(void *arg) {
        printf("t1 is running on thread \n");
}

void t2(void *arg) {
        printf("t2 is running on thread \n");
}

void t3(void *arg) {
        printf("t3 is running on thread \n");
}

void t4(void *arg) {
        printf("t4 is running on thread \n");
}

int main(void) {
        int nthreads = 8;//sysconf(_SC_NPROCESSORS_ONLN); // Linux

        printf("Share thread pool with %d threads with at lease totalthroughput * nthreads task size\n", nthreads);
        at_thpool_t *thpool = at_thpool_create(nthreads);

        printf("assigned %d tasks between %d threads\n", TASK_SIZE, nthreads);
        int i;
        for (i = 0; ; i++) { // here remove the condition
                at_thpool_newtask(thpool, t1, NULL);
                at_thpool_newtask(thpool, t2, NULL);
                at_thpool_newtask(thpool, t3, NULL);
                at_thpool_newtask(thpool, t4, NULL);
        }

#if defined _WIN32 || _WIN64
        Sleep(1000);
#else
        sleep(1);
#endif

        puts("shutdown thread pool");
        at_thpool_gracefully_shutdown(thpool);

        return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant