Sponsored Content
Top Forums Programming Problem with POSIX pthreads and virtual memory Post 302222216 by JEscola on Wednesday 6th of August 2008 08:55:12 AM
Old 08-06-2008
Data Problem with POSIX pthreads and virtual memory

Hi, i have this code... in order to test my problem...
Code:
#include <stdio.h>
#include <iostream>
#include <pthread.h>
static void* cliente(void *datos);

int main()
{
        pthread_attr_t tattr;
        int ret;
        size_t size = PTHREAD_STACK_MIN + 0x0100;
        ret = pthread_attr_init(&tattr);
        ret = pthread_attr_setstacksize(&tattr, size);
        ret= pthread_attr_setdetachstate(&tattr,PTHREAD_CREATE_JOINABLE);
        ret=0;
        pthread_t mythread[401];
        while(ret<400)
        {
                                int error=pthread_create((pthread_t *)&mythread[ret],&tattr,cliente,NULL);
                                if(error==0)pthread_detach((pthread_t)mythread);

                ret++;
        }

        while(true)
        {}
}
static void* cliente(void *datos)
{
        char *buff=(char *)malloc(100000);
        sleep(15);
        free(buff);
        buff=NULL;
        pthread_exit(NULL);

}

this code uses aprox. 370 Mb of virtual memory, But when the threads finish it does not liberate the above mentioned memory.

Any body can help me??

Last edited by jim mcnamara; 08-06-2008 at 10:55 AM.. Reason: added code tags
 

10 More Discussions You Might Find Interesting

1. Programming

how can i avoid virtual memory problem

Hi i was trying to compile one of my project source file which is neary 2MB large. i couldnt compile it, instead getting an error like "insufficient virtual memory" how come i get away with this problem ,please suggest. thanks (1 Reply)
Discussion started by: Raom
1 Replies

2. Programming

Problem with pthreads

hi i have a code: I found that after exiting from child thread memory isn't freed. I commented everything which is "some actions" here, so thread's function contains only two lines. But it doesn't help. What do I do wrong? Thanks a lot (3 Replies)
Discussion started by: sery0ga
3 Replies

3. Programming

POSIX Thread - Memory leak

Hi all! I am implementing an http server in c++ using the posix thread, but i am having a memory leak and i cannot find the reason. I have already commented out the section that initializes the threads and i found out, the problem is when i initialize/run the threads. In the threads i have... (1 Reply)
Discussion started by: laurovalente
1 Replies

4. UNIX for Advanced & Expert Users

Shared Memory (Posix)

hi I had to create a shared memory segment which allows the creation of 8 child processes each with 1024 bytes and contains a common buffer area of 2096bytes. i was able to create the shared memory with shm_open() followed by ftruncate() and mmap() system calls. but for the shared buffer, i... (3 Replies)
Discussion started by: pretty
3 Replies

5. AIX

ulimits max locked memory virtual memory

Hi, Would any one be so kind to explain me : are ulimits defined for each user seperately ? When ? Specialy what is the impact of : max locked memory and virtual memory on performance of applications for a user. Many thanks. PS : this is what I can see in MAN : ulimit ] ... (5 Replies)
Discussion started by: big123456
5 Replies

6. UNIX for Dummies Questions & Answers

cpu, memory and virtual memory usage

Hi All, Does anyone know what the best commands in the UNIX command line are for obtaining this info: current CPU usage memory usage virtual memory usage preferably with date and time parameters too? thanks ocelot (4 Replies)
Discussion started by: ocelot
4 Replies

7. UNIX for Advanced & Expert Users

POSIX thread runs out of memory

i am creating threads in my program using the POSIX interface. when the thread starts executing i run out of memory and get a core dump. i have tried to increase the threads stack size using pthread_attr_setstacksize, but of no use since i guess the dynamic memory is allocated on the heap and... (1 Reply)
Discussion started by: aniketkadu2002
1 Replies

8. Programming

Memory LEAK with pthreads

I have this code... #include <stdio.h> #include <iostream> #include <pthread.h> static void* cliente(void *datos); int main() { pthread_attr_t tattr; int ret; size_t size = PTHREAD_STACK_MIN + 0x0100; ret = pthread_attr_init(&tattr); ret =... (8 Replies)
Discussion started by: JEscola
8 Replies

9. Programming

POSIX Message Queue Memory Allocation

Hi, I wanted to know whether the POSIX message queues are statically allocated memory by the kernel based on the parameters specified in the open or as and when we send messages, memory are allocated? Does the kernel reserve the specified memory for the message queue irrespective of whether... (1 Reply)
Discussion started by: sumtata
1 Replies

10. Solaris

Virtual Memory problem on local zone

Hi I have a problem with Virtual Memory on one local zone (myzone1): //from local zone (myzone1) swap -s total: 22888544k bytes allocated + 0k reserved = 22888544k used, 3325856k available swap -l swapfile dev swaplo blocks free /dev/swap ... (0 Replies)
Discussion started by: primo102
0 Replies
PAPI_start(3)							       PAPI							     PAPI_start(3)

NAME
PAPI_start - Start counting hardware events in an event set. SYNOPSIS
Detailed Description C Interface: #include <papi.h> int PAPI_start( int EventSet ); Parameters: EventSet -- an integer handle for a PAPI event set as created by PAPI_create_eventset Return values: PAPI_OK PAPI_EINVAL -- One or more of the arguments is invalid. PAPI_ESYS -- A system or C library call failed inside PAPI, see the errno variable. PAPI_ENOEVST -- The EventSet specified does not exist. PAPI_EISRUN -- The EventSet is currently counting events. PAPI_ECNFLCT -- The underlying counter hardware can not count this event and other events in the EventSet simultaneously. PAPI_ENOEVNT -- The PAPI preset is not available on the underlying hardware. PAPI_start starts counting all of the hardware events contained in the previously defined EventSet. All counters are implicitly set to zero before counting. Assumes an initialized PAPI library and a properly added event set. Example: * int EventSet = PAPI_NULL; * long long values[2]; * int ret; * * ret = PAPI_create_eventset(&EventSet); * if (ret != PAPI_OK) handle_error(ret); * * // Add Total Instructions Executed to our EventSet * ret = PAPI_add_event(EventSet, PAPI_TOT_INS); * if (ret != PAPI_OK) handle_error(ret); * * // Start counting * ret = PAPI_start(EventSet); * if (ret != PAPI_OK) handle_error(ret); * poorly_tuned_function(); * ret = PAPI_stop(EventSet, values); * if (ret != PAPI_OK) handle_error(ret); * printf("%lld ",values[0]); * See Also: PAPI_create_eventset PAPI_add_event PAPI_stop Author Generated automatically by Doxygen for PAPI from the source code. Version 5.2.0.0 Tue Jun 17 2014 PAPI_start(3)
All times are GMT -4. The time now is 04:47 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy