Sponsored Content
Top Forums Programming Deallocating memory in multi-threaded environment. Post 302518400 by DGPickett on Friday 29th of April 2011 01:56:10 PM
Old 04-29-2011
Threads is having two cooks in the kitchen, but as far as free(), same old problem. Once you free(), nobody should use the pointer or any derived pointer, and nice people set it to null for testing, and start it out that way, too. Threads adds a race condition, where only a mutex and similar IPC-ish mechanisms can tell another thread anything, so you needs to be sure they will never reference the space before your free. Your scheme has the controlling mutex in the deallocated space. It is a bit like an elevator with no outside door. You do not want to test for the car with your foot, as a passing car will cut your leg off.

The garbage collection languages free things when all references are gone. You put your finger on a big language limitation/feature. Early JAVA would be fooled by data that looked like a pointer to the object, and not always free the object!

You can manage the deallocation in a stable way in many applications, like a buffering input reader, which hangs read data on a linked list that it creates, and there is a consumer-owned-flag so when it has been consumed, the reader knows it can reuse it. The consumer might just null the pointer in an indirect linked list, and free() the space so it could return to the arena, but the arena might become fragmented (hint: bsdmalloc()!). If the buffers can be reused, it might be good for them all to be the same size, but if not, they can be just big enough. The critical part is that the references are stable, the reader creating, writing and destroying everything except turning on the consumed flag.
 

10 More Discussions You Might Find Interesting

1. Programming

problem deallocating memory for 3d aray

Can anyone tell me why this section of code causes a segmentation fault when 'deallocate' is called?. Although it works when n>=number. This code segment is intended to be used in a program in which the tensor is very large, (5x512x512) or greater. i tryed to compile this using gcc version... (2 Replies)
Discussion started by: bongobonga
2 Replies

2. Programming

multi-threaded server, pthreads, sleep

I am trying to writa a multi-client & multi-threaded TCP server. There is a thread pool. Each thread in the pool will handle requests of multiple clients. But here I have a problem. I find a solution but it is not how it must be... i think. When threads working without sleep(1) I can't... (0 Replies)
Discussion started by: Parahat Melayev
0 Replies

3. Programming

HOWTO: Calculate the balance of work in multi-threaded app.

I was wondering if anyone could give me a good idea how to calculate how balanced the threading is on a multi-threaded application. I want a percentage, such as "threads are 80% balanced." This is the way I am currently going about it, maybe it is good, maybe not. First, whenever a thread... (2 Replies)
Discussion started by: DreamWarrior
2 Replies

4. AIX

multi threaded program is hanging

I have a Multithreaded program which is hanging on AIX. OS Version: AIX 5.2 and thread library version : 5.2.0.75 We Initiate the process with 50 threads..when we are disconnecting from the process it hangs.There is lots of other stuff involved here.I am just sending the piece of the problem with... (0 Replies)
Discussion started by: hikrishn
0 Replies

5. Programming

Questions about timer in multi-threads environment

Hi I have questions about timer function in multi-threads environment. My application has multi-threads, in one thread, I set a timer, when the timer expires, the timer function will interrupt other thread and execute. I am not clear which thread will be interrupted by the timer function ?... (2 Replies)
Discussion started by: longskys
2 Replies

6. Shell Programming and Scripting

In need of multi threaded perl assistance

I need to write a perl script to execute external programs and grab the output and return code. Each program should be killed if it has not completed within X seconds. Imagine that the script goes something like this : @commands = &get_commands(); foreach $cmd (@commands) { $pid =... (4 Replies)
Discussion started by: SandmanCL
4 Replies

7. UNIX for Advanced & Expert Users

Multi-threaded encryption @ Fedora 11

Hello, are any of the encryption programs capable of true multi-threading ? Friend of mine tells me that he's been running some testing on Fedora 11 and that the kernel doesn't support multi-threading at that level. I've been looking into TrueCrypt, encfs and both calm to support... (0 Replies)
Discussion started by: TehOne
0 Replies

8. Linux

Multi-threaded encryption @ Fedora 11

Hello, are any of the encryption programs capable of true multi-threading ? Friend of mine tells me that he's been running some testing on Fedora 11 and that the kernel doesn't support multi-threading at that level. I've been looking into TrueCrypt, encfs and both calm to support... (1 Reply)
Discussion started by: TehOne
1 Replies

9. Programming

multi-threaded memory leak

Hello All : I write a .c program to test the exactually resource the memory leak as follows: 1 #include <stdio.h> 2 #define NUM 100000 3 void *Thread_Run(void * arg){ 4 //TODO 5 //pthread_datch(pthread_self()); 6 int socket= (int)arg; 7 ... (1 Reply)
Discussion started by: aobai
1 Replies

10. Shell Programming and Scripting

script for multi-threaded bash processes

hey everyone, I'm having some trouble breaking down some code. It's simple a control script that takes machines meant to be backed up from a list. Then according to that will run multi-threaded processes up until the specified thread limit. for example if there are 4 machines to be backed up,... (2 Replies)
Discussion started by: terrell
2 Replies
plimit(1)							   User Commands							 plimit(1)

NAME
plimit - get or set the resource limits of running processes SYNOPSIS
plimit [-km] pid... plimit {-cdfnstv} soft,hard... pid... DESCRIPTION
If one or more of the cdfnstv options is specified, plimit sets the soft (current) limit and/or the hard (maximum) limit of the indicated resource(s) in the processes identified by the process-ID list, pid. Otherwise plimit reports the resource limits of the processes identi- fied by the process-ID list, pid. Only the owner of a process or the super-user is permitted either to get or to set the resource limits of a process. Only the super-user can increase the hard limit. OPTIONS
The following options are supported: -k On output, show file sizes in kilobytes (1024 bytes) rather than in 512-byte blocks. -m On output, show file and memory sizes in megabytes (1024*1024 bytes). The remainder of the options are used to change specified resource limits. They each accept an argument of the form: soft,hard where soft specifies the soft (current) limit and hard specifies the hard (maximum) limit. If the hard limit is not specified, the comma may be omitted. If the soft limit is an empty string, only the hard limit is set. Each limit is either the literal string unlimited, or a number, with an optional scaling factor, as follows: nk n kilobytes nm n megabytes (minutes for CPU time) nh n hours (for CPU time only) mm:ss minutes and seconds (for CPU time only) The soft limit cannot exceed the hard limit. -c soft,hard Set core file size limits (default unit is 512-byte blocks). -d soft,hard Set data segment (heap) size limits (default unit is kilobytes). -f soft,hard Set file size limits (default unit is 512-byte blocks). -n soft,hard Set file descriptor limits (no default unit). -s soft,hard Set stack segment size limits (default unit is kilobytes). -t soft,hard Set CPU time limits (default unit is seconds). -v soft,hard Set virtual memory size limits (default unit is kilobytes). OPERANDS
The following operands are supported. pid Process ID list. EXIT STATUS
plimit returns the exit value zero on success, non-zero on failure (such as no such process, permission denied, or invalid option). FILES
/proc/pid/* process information and control files ATTRIBUTES
See attributes(5) for descriptions of the following attributes: +-----------------------------+-----------------------------+ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | +-----------------------------+-----------------------------+ |Availability |SUNWesu | +-----------------------------+-----------------------------+ SEE ALSO
ulimit(1), proc(1), getrlimit(2), setrlimit(2), proc(4), attributes(5), SunOS 5.10 8 Jun 1998 plimit(1)
All times are GMT -4. The time now is 08:37 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy