threading bugs
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 3256
Thread::Tie 0.12
Thread::Tie can tie variables into a thread of their own. more>>
Thread::Tie can tie variables into a thread of their own.
SYNOPSIS
use Thread::Tie; # use as early as possible for maximum memory savings
# use default thread + tieing + create thread when needed
tie $scalar, Thread::Tie;
tie @array, Thread::Tie;
tie %hash, Thread::Tie;
tie *HANDLE, Thread::Tie;
# use alternate implementation
tie $scalar, Thread::Tie,
{ module => Own::Tie::Implementation, # used automatically
use => Use::This::Module::Also, # optional, also as []
eval => arbitrary Perl code, # optional
};
# initialize right away
tie $scalar, Thread::Tie, {}, 10;
tie @array, Thread::Tie, {}, qw(a b c);
tie %hash, Thread::Tie, {}, (a => A, b => B, c => C);
tie *HANDLE, Thread::Tie, {},>:layer,filename;
# create an alternate thread and use that
my $tiethread = Thread::Tie::Thread->new;
tie $scalar, Thread::Tie, {thread => $tiethread};
# object methods
my $tied = tie stuff,Thread::Tie,parameters;
my $tied = tied( stuff );
my $semaphore = $tied->semaphore; # scalar for lock()ing tied variable
my $module = $tied->module; # module tied to in thread
my $tiethread = $tied->thread; # thread to which variable is tied
my $tid = $tiethread->tid; # thread id of tied thread
my $thread = $tiethread->thread; # actual "threads" thread
untie( stuff ); # calls DESTROY in thread, cleans up thoroughly
Thread::Tie->shutdown; # shut down default handling thread
$tiethread->shutdown; # shut down specific thread
<<lessSYNOPSIS
use Thread::Tie; # use as early as possible for maximum memory savings
# use default thread + tieing + create thread when needed
tie $scalar, Thread::Tie;
tie @array, Thread::Tie;
tie %hash, Thread::Tie;
tie *HANDLE, Thread::Tie;
# use alternate implementation
tie $scalar, Thread::Tie,
{ module => Own::Tie::Implementation, # used automatically
use => Use::This::Module::Also, # optional, also as []
eval => arbitrary Perl code, # optional
};
# initialize right away
tie $scalar, Thread::Tie, {}, 10;
tie @array, Thread::Tie, {}, qw(a b c);
tie %hash, Thread::Tie, {}, (a => A, b => B, c => C);
tie *HANDLE, Thread::Tie, {},>:layer,filename;
# create an alternate thread and use that
my $tiethread = Thread::Tie::Thread->new;
tie $scalar, Thread::Tie, {thread => $tiethread};
# object methods
my $tied = tie stuff,Thread::Tie,parameters;
my $tied = tied( stuff );
my $semaphore = $tied->semaphore; # scalar for lock()ing tied variable
my $module = $tied->module; # module tied to in thread
my $tiethread = $tied->thread; # thread to which variable is tied
my $tid = $tiethread->tid; # thread id of tied thread
my $thread = $tiethread->thread; # actual "threads" thread
untie( stuff ); # calls DESTROY in thread, cleans up thoroughly
Thread::Tie->shutdown; # shut down default handling thread
$tiethread->shutdown; # shut down specific thread
Download (0.015MB)
Added: 2007-08-06 License: Perl Artistic License Price:
809 downloads
RT-Thread 0.2.2
RT-Thread is a real-time operating system. more>>
RT-Thread is a real-time operating system. It is designed specifically for small memory footprint platforms. The kernel supports the tranditional RTOS services, such as multiple threads, semaphores, mutexes, event flags, mailboxes, etc.
RT-Thread project also provides a C-expression interpreter shell, from which a programmer can access kernel variables and invoke system functions.
Main features:
Kernel Object System
- There is a kernel object system, which can access and manage all of the kernel objects. Kernel objects include most of the facilities in the kernel, for example, thread, semaphore etc. Kernel objects can be static objects, whose memory is allocated in compiling. It can be dynamic objects as well, whose memory is allocated from system heaps in runtime. Through the kernel object system, RT-Thread operating system can be independent from the memory management system and greatly enhance the scalability of the system.
Multi-Task/Thread Scheduling
- RT-Thread operating system supports multi-task systems, which are based on thread scheduling. The scheduling algorithm used in RT-Thread operating system is a full preemptive priority-based scheduling algorithm. It supports 256 priority levels, in which 0 is the highest and 255 the lowest. The 255th priority is used for idle thread. The scheduling algorithm also supports threads running at same priority level. The shared time-slice round-robin scheduling is used for this case. The time of scheduler to determine the next highest ready thread is determinant. The number of threads in the system is unlimited, only related with RAM.
Synchronization Mechanisms
- RT-Thread operating system supports the traditional semaphore and mutex. Mutex objects use inherited priority to prevent priority reversion. The semaphore release action is safe for interrupt service routine. Moreover, the block queue for thread to obtain semaphore or mutex can be sorted by priority or FIFO.
Inter-Thread Communication
- RT-Thread operating systems supports event/fast event, mail box and message queue. The event mechanism is used to awake a thead by setting one or more corresponding bit of a binary number when an event ocurs. The fast event supports event thread queue. Once a one bit event occurs, the corresponding blocked thread can be found out timing accurately, then will be waked up. In mailbox, a mail length is fixed to 4 byte, which is more effective than message queue. The send action for communication facilities is also safe for interrupt service routine.
Clock and Timer
- In default, the system uses clock tick to implement shared time-slice scheduling. The timing sensitivity of thread is implemented by timers. The timer can be set as one-shot or periodic timeout.
Memory Management
- RT-Thread operating system supports two types memory management: static memory pool management and dynamic memory heap management. The time to allocate a memory block from the memory pool is determinant and when the memory pool is empty, the allocated thread can be blocked (or immediately return, or waiting for sometime to return, which are determined by a timeout parameter). When other thread releases memory blocks to this memory pool, the blocked thread is wake up.
Enhancements:
- More porting was done to Samsung S3C44b0 CPU, AMTEL AT91SAM7S64, Nintendo DS, and Intel i386.
<<lessRT-Thread project also provides a C-expression interpreter shell, from which a programmer can access kernel variables and invoke system functions.
Main features:
Kernel Object System
- There is a kernel object system, which can access and manage all of the kernel objects. Kernel objects include most of the facilities in the kernel, for example, thread, semaphore etc. Kernel objects can be static objects, whose memory is allocated in compiling. It can be dynamic objects as well, whose memory is allocated from system heaps in runtime. Through the kernel object system, RT-Thread operating system can be independent from the memory management system and greatly enhance the scalability of the system.
Multi-Task/Thread Scheduling
- RT-Thread operating system supports multi-task systems, which are based on thread scheduling. The scheduling algorithm used in RT-Thread operating system is a full preemptive priority-based scheduling algorithm. It supports 256 priority levels, in which 0 is the highest and 255 the lowest. The 255th priority is used for idle thread. The scheduling algorithm also supports threads running at same priority level. The shared time-slice round-robin scheduling is used for this case. The time of scheduler to determine the next highest ready thread is determinant. The number of threads in the system is unlimited, only related with RAM.
Synchronization Mechanisms
- RT-Thread operating system supports the traditional semaphore and mutex. Mutex objects use inherited priority to prevent priority reversion. The semaphore release action is safe for interrupt service routine. Moreover, the block queue for thread to obtain semaphore or mutex can be sorted by priority or FIFO.
Inter-Thread Communication
- RT-Thread operating systems supports event/fast event, mail box and message queue. The event mechanism is used to awake a thead by setting one or more corresponding bit of a binary number when an event ocurs. The fast event supports event thread queue. Once a one bit event occurs, the corresponding blocked thread can be found out timing accurately, then will be waked up. In mailbox, a mail length is fixed to 4 byte, which is more effective than message queue. The send action for communication facilities is also safe for interrupt service routine.
Clock and Timer
- In default, the system uses clock tick to implement shared time-slice scheduling. The timing sensitivity of thread is implemented by timers. The timer can be set as one-shot or periodic timeout.
Memory Management
- RT-Thread operating system supports two types memory management: static memory pool management and dynamic memory heap management. The time to allocate a memory block from the memory pool is determinant and when the memory pool is empty, the allocated thread can be blocked (or immediately return, or waiting for sometime to return, which are determined by a timeout parameter). When other thread releases memory blocks to this memory pool, the blocked thread is wake up.
Enhancements:
- More porting was done to Samsung S3C44b0 CPU, AMTEL AT91SAM7S64, Nintendo DS, and Intel i386.
Download (0.34MB)
Added: 2007-01-21 License: GPL (GNU General Public License) Price:
1009 downloads
Protothreads 1.4
Protothreads are extremely lightweight stackless threads designed for severely memory constrained systems. more>>
Protothreads are extremely lightweight stackless threads designed for severely memory constrained systems, such as small embedded systems or wireless sensor network nodes.
Protothreads provide linear code execution for event-driven systems implemented in C. Protothreads project can be used with or without an underlying operating system.
Protothreads provide a blocking context on top of an event-driven system, without the overhead of per-thread stacks. The purpose of protothreads is to implement sequential flow of control without complex state machines or full multi-threading.
While protothreads originally were created for memory-constrained embedded systems, it has found many uses as a general purpose library too. Examples include multimedia streaming server software, grid computing research software, and MPEG decoding software for Internet TVs.
Main features:
Main features:
- Very small RAM overhead - only two bytes per protothread and no extra stacks
- Highly portable - the protothreads library is 100% pure C and no architecture specific assembly code
- Can be used with or without an OS
- Provides blocking wait without full multi-threading or stack-switching
- Freely available under a BSD-like open source license
Example applications:
- Memory constrained systems
- Event-driven protocol stacks
- Small embedded systems
- Sensor network nodes
- Portable C applications
Enhancements:
- PT_SCHEDULE() now returns true both when a protothread is waiting and when it has yielded.
- A README file has been added for Visual C++ users that explains how protothreads may trigger a compiler bug and how to prevent this from happening.
<<lessProtothreads provide linear code execution for event-driven systems implemented in C. Protothreads project can be used with or without an underlying operating system.
Protothreads provide a blocking context on top of an event-driven system, without the overhead of per-thread stacks. The purpose of protothreads is to implement sequential flow of control without complex state machines or full multi-threading.
While protothreads originally were created for memory-constrained embedded systems, it has found many uses as a general purpose library too. Examples include multimedia streaming server software, grid computing research software, and MPEG decoding software for Internet TVs.
Main features:
Main features:
- Very small RAM overhead - only two bytes per protothread and no extra stacks
- Highly portable - the protothreads library is 100% pure C and no architecture specific assembly code
- Can be used with or without an OS
- Provides blocking wait without full multi-threading or stack-switching
- Freely available under a BSD-like open source license
Example applications:
- Memory constrained systems
- Event-driven protocol stacks
- Small embedded systems
- Sensor network nodes
- Portable C applications
Enhancements:
- PT_SCHEDULE() now returns true both when a protothread is waiting and when it has yielded.
- A README file has been added for Visual C++ users that explains how protothreads may trigger a compiler bug and how to prevent this from happening.
Download (0.25MB)
Added: 2006-10-02 License: BSD License Price:
1120 downloads
State Threads 1.8
State Threads project is a small library for designing scalable Internet applications. more>>
State Threads project is a small library for designing scalable Internet applications.
The State Threads is a small application library which provides a foundation for writing fast and highly scalable Internet applications (such as Web servers, proxy servers, mail transfer agents, etc.) on UNIX-like platforms.
It offers a threading API for structuring a network application as an event-driven state machine.
The State Threads library is a derivative of the Netscape Portable Runtime library (NSPR) and therefore is distributed under the Mozilla Public License (MPL) version 1.1 or the GNU General Public License (GPL) version 2 or later.
Enhancements:
- Added support for kqueue and epoll on platforms that support them.
- Added ability to choose the event notification system at program startup.
- Long-overdue public definitions of ST_UTIME_NO_TIMEOUT (-1ULL) and ST_UTIME_NO_WAIT (0) [bug 1514436].
- Documentation patch for st_utime() [bug 1514484].
- Documentation patch for st_timecache_set() [bug 1514486].
- Documentation patch for st_netfd_serialize_accept() [bug 1514494].
- Added st_writev_resid() [rfe 1538344].
- Added st_readv_resid() [rfe 1538768] and, for symmetry, st_readv().
<<lessThe State Threads is a small application library which provides a foundation for writing fast and highly scalable Internet applications (such as Web servers, proxy servers, mail transfer agents, etc.) on UNIX-like platforms.
It offers a threading API for structuring a network application as an event-driven state machine.
The State Threads library is a derivative of the Netscape Portable Runtime library (NSPR) and therefore is distributed under the Mozilla Public License (MPL) version 1.1 or the GNU General Public License (GPL) version 2 or later.
Enhancements:
- Added support for kqueue and epoll on platforms that support them.
- Added ability to choose the event notification system at program startup.
- Long-overdue public definitions of ST_UTIME_NO_TIMEOUT (-1ULL) and ST_UTIME_NO_WAIT (0) [bug 1514436].
- Documentation patch for st_utime() [bug 1514484].
- Documentation patch for st_timecache_set() [bug 1514486].
- Documentation patch for st_netfd_serialize_accept() [bug 1514494].
- Added st_writev_resid() [rfe 1538344].
- Added st_readv_resid() [rfe 1538768] and, for symmetry, st_readv().
Download (0.097MB)
Added: 2007-03-16 License: MPL (Mozilla Public License) Price:
953 downloads
Thread::Apartment 0.51
Thread::Apartment is an apartment threading wrapper for Perl objects. more>>
Thread::Apartment is an apartment threading wrapper for Perl objects.
SYNOPSIS
package MyClass;
use Thread::Apartment::Server;
use base qw(Thread::Apartment::Server);
sub new {
#
# the usual constructor
#
}
#
# mark some methods as simplex
#
sub get_simplex_methods {
return { bar => 1 };
}
#
# mark some methods as urgent
#
sub get_urgent_methods {
return { bingo => 1 };
}
sub foo {
#
# do something
#
}
sub bar {
#
# do something else
#
}
sub bingo {
print "BINGO!n";
}
1;
#
# create pool of 20 apartment threads
#
Thread::Apartment->create_pool(AptPoolSize => 20);
my $apt = Thread::Apartment->new(
AptClass => MyClass, # class to install in apartment
AptTimeout => 10, # timeout secs for TQD responses
AptRequire => { # classes to require into the thread
This::Class => 1.234,
That::Class => 0.02
},
AptParams => @params_for_MyClass) || die $@;
my $result = $apt->foo(@params);
die $@ unless $result;
#
# bar is simplex
#
$apt->bar(@params);
Thread::Apartment provides an apartment threading wrapper for Perl classes. "Apartment threading" is a method for isolating an object (or object hierarchy) in its own thread, and providing external interfaces via lightweight client proxy objects. This approach is especially valuable in the Perl threads environment, which doesnt provide a direct means of passing complex, nested structure objects between threads, and for non-threadsafe legacy object architectures, e.g., Perl/Tk.
By using lightweight client proxy objects that implement the Thread::Queue::Queueable interface, with Thread::Queue::Duplex objects as the communication channel between client proxies and apartment threads (or between threads in general), a more thread-friendly OO environment is provided, ala Java, i.e., the ability to pass arbitrary objects between arbitrary threads.
<<lessSYNOPSIS
package MyClass;
use Thread::Apartment::Server;
use base qw(Thread::Apartment::Server);
sub new {
#
# the usual constructor
#
}
#
# mark some methods as simplex
#
sub get_simplex_methods {
return { bar => 1 };
}
#
# mark some methods as urgent
#
sub get_urgent_methods {
return { bingo => 1 };
}
sub foo {
#
# do something
#
}
sub bar {
#
# do something else
#
}
sub bingo {
print "BINGO!n";
}
1;
#
# create pool of 20 apartment threads
#
Thread::Apartment->create_pool(AptPoolSize => 20);
my $apt = Thread::Apartment->new(
AptClass => MyClass, # class to install in apartment
AptTimeout => 10, # timeout secs for TQD responses
AptRequire => { # classes to require into the thread
This::Class => 1.234,
That::Class => 0.02
},
AptParams => @params_for_MyClass) || die $@;
my $result = $apt->foo(@params);
die $@ unless $result;
#
# bar is simplex
#
$apt->bar(@params);
Thread::Apartment provides an apartment threading wrapper for Perl classes. "Apartment threading" is a method for isolating an object (or object hierarchy) in its own thread, and providing external interfaces via lightweight client proxy objects. This approach is especially valuable in the Perl threads environment, which doesnt provide a direct means of passing complex, nested structure objects between threads, and for non-threadsafe legacy object architectures, e.g., Perl/Tk.
By using lightweight client proxy objects that implement the Thread::Queue::Queueable interface, with Thread::Queue::Duplex objects as the communication channel between client proxies and apartment threads (or between threads in general), a more thread-friendly OO environment is provided, ala Java, i.e., the ability to pass arbitrary objects between arbitrary threads.
Download (0.072MB)
Added: 2007-06-14 License: Perl Artistic License Price:
862 downloads
Threads-pop3d 1.0.2
Threads-pop3d provides a very fast and light THREADS POP3 Daemon which can work with MySQL. more>>
Threads-pop3d provides a very fast and light THREADS POP3 Daemon which can work with MySQL.
THREADS POP is an implementation of the Post Office Protocol server that conforms fully to the specifications in RFC 1939 (and later ones). For start/stop use /etc/rc.d/init.d/threads-pop3d.init script.
After start THREADS POP uses syslogd to log all messages. If you will have some problems look in the file /var/log/mail.log. This daemon first print there information about started threads. Later you can see information about logged users. If you end work (dont forget about threads-pop3d.init script) you will see how many connections served everyone thread.
The extra one thread show you how many connections daemon needed create for surplus. I.e. your daemon goes with 10 threads. In the one time connect themself 10 clients.
Then server creates next threads to serve next clients. Now every extra client (connected in this same time) increases surpluses counter. After disconnection stays so many children as you gave in -c option. In the one time server cant overdraft MAX_CHILDREN number.
If he does, then next clients must wait for disconnection the connected one.
<<lessTHREADS POP is an implementation of the Post Office Protocol server that conforms fully to the specifications in RFC 1939 (and later ones). For start/stop use /etc/rc.d/init.d/threads-pop3d.init script.
After start THREADS POP uses syslogd to log all messages. If you will have some problems look in the file /var/log/mail.log. This daemon first print there information about started threads. Later you can see information about logged users. If you end work (dont forget about threads-pop3d.init script) you will see how many connections served everyone thread.
The extra one thread show you how many connections daemon needed create for surplus. I.e. your daemon goes with 10 threads. In the one time connect themself 10 clients.
Then server creates next threads to serve next clients. Now every extra client (connected in this same time) increases surpluses counter. After disconnection stays so many children as you gave in -c option. In the one time server cant overdraft MAX_CHILDREN number.
If he does, then next clients must wait for disconnection the connected one.
Download (0.16MB)
Added: 2007-02-26 License: GPL (GNU General Public License) Price:
972 downloads
Mail::Thread::Chronological 1.22
Mail::Thread::Chronological can rearrange Mail::Thread::Containers into a Chronological structure. more>>
Mail::Thread::Chronological can rearrange Mail::Thread::Containers into a Chronological structure.
SYNOPSIS
use Mail::Thread;
use Mail::Thread::Chronological;
my $threader = Mail::Thread->new( @messages );
my $lurker = Mail::Thread::Chronological->new;
$threader->thread;
for my $thread ($threader->rootset) {
for my $row ( $lurker->arrange( $thread ) ) {
my $container = grep { ref $_ } @$row;
print join(, map { ref $_ ? * : $_ } @$row),
" ", $container->messageid, "n";
}
Given a Mail::Thread::Container, Mail::Thread::Chronological transforms the tree structure into a 2-dimensional array representing the history of a given thread in time.
The output is similar to that of the Lurker mail archiving system, with a couple of small exceptions:
Characters used
The grid is populated with the characters (space), -, +, |, {, or Mail::Thread::Container objects. Lurker uses [a-g], and differentiates T-junctions from corners for you, this module assumes you will do that for yourself.
The characters mean:
space
empty cell
-
horizontal line
+
T junction or corner
|
vertical line
{
vertical line crossing over a horizontal line
Vertical stream crossing is permitted
In the original lurker crossing a path vertically is not allowed, this results in a lot of horizontal space being used.
<<lessSYNOPSIS
use Mail::Thread;
use Mail::Thread::Chronological;
my $threader = Mail::Thread->new( @messages );
my $lurker = Mail::Thread::Chronological->new;
$threader->thread;
for my $thread ($threader->rootset) {
for my $row ( $lurker->arrange( $thread ) ) {
my $container = grep { ref $_ } @$row;
print join(, map { ref $_ ? * : $_ } @$row),
" ", $container->messageid, "n";
}
Given a Mail::Thread::Container, Mail::Thread::Chronological transforms the tree structure into a 2-dimensional array representing the history of a given thread in time.
The output is similar to that of the Lurker mail archiving system, with a couple of small exceptions:
Characters used
The grid is populated with the characters (space), -, +, |, {, or Mail::Thread::Container objects. Lurker uses [a-g], and differentiates T-junctions from corners for you, this module assumes you will do that for yourself.
The characters mean:
space
empty cell
-
horizontal line
+
T junction or corner
|
vertical line
{
vertical line crossing over a horizontal line
Vertical stream crossing is permitted
In the original lurker crossing a path vertically is not allowed, this results in a lot of horizontal space being used.
Download (0.005MB)
Added: 2006-06-28 License: Perl Artistic License Price:
1213 downloads
DM1 Threads Library 1.0.5
DM1 Threads Library is a portable threads library in C++. more>>
DM1 Thread Library is part of the DM1 project. This library was born out of my need to have a portable C++ Thread library that would be simple to use, and would provide all the necessary Threads functionality I required for the DM1 project.
Initially, this library was in C, but when I decided to re-write DM1 in C++, I ported the library to C++. During the port, I enhanced the functionality of the Threads library.
The DM1 Threads library aims to be small. It does not try to provide a comprehensive set of functionality, but only what is absolutely essential for a project like DM1. I had the simplicity of the Java Threads package in mind when creating this library.
The constructs provided by the DM1 Thread library are:
- Thread objects that represent Operating System threads.
- A Mutex is provided as a mechanism for Mutual Exclusion . Mutexes are used to ensure that a piece of code is executed by only one thread at any point in time.
- Events are provided as low-level mechanisms for thread synchronisation. Events can be waited for, and signalled to.
- A higher level object, that combines the functionality of an Event and a Mutex, is provided. This is the Monitor object. A Monitor can be locked exclusively, just like a Mutex, but it can also be made the object of a Wait operation. The signalling mechanism supports notification of one or more waiting threads.
- To enable more efficient locking when both shared and exclusive access to data is required, Latches are provided.
- Apart from the Thread synchronisation primitives described above, the library also provides a ThreadPool for the situation when it is inefficient to create a thread exclusively for a particular task, and it is desirable to share a pool of threads for executing multiple tasks.
Design Principles
The DM1 Threads library was designed with the following principles in mind:
1. Implement the bare minimum that is required. This Threads library does not aim to be a comprehensive threads package.
2. Avoid complex algorithms. If a particular construct is hard to implement correctly on all platforms, avoid it.
3. Document the library.
4. Avoid low level code, such as assembler code to implement Spin locks. Rely on the libraries provided by the Operating System.
5. Avoid holding Mutexes beyond function calls. A DM1 Thread library function will not hold any Mutex locks when it returns.
6. Avoid using clever C++ techniques wherever possible. (Unfortunately, some cleverness is required to implement the Thread class correctly).
7. Avoid dependency on external libraries. The DM1 library only requires the standard C library, apart from native Threads functionality.
8. Always report an error as soon as it is discovered.
9. Insert debug messages that can be switched on at run-time.
10. Do not throw exceptions from destructors because these might be executing as a result of an uncaught exception.
11. Never let an error go unreported.
<<lessInitially, this library was in C, but when I decided to re-write DM1 in C++, I ported the library to C++. During the port, I enhanced the functionality of the Threads library.
The DM1 Threads library aims to be small. It does not try to provide a comprehensive set of functionality, but only what is absolutely essential for a project like DM1. I had the simplicity of the Java Threads package in mind when creating this library.
The constructs provided by the DM1 Thread library are:
- Thread objects that represent Operating System threads.
- A Mutex is provided as a mechanism for Mutual Exclusion . Mutexes are used to ensure that a piece of code is executed by only one thread at any point in time.
- Events are provided as low-level mechanisms for thread synchronisation. Events can be waited for, and signalled to.
- A higher level object, that combines the functionality of an Event and a Mutex, is provided. This is the Monitor object. A Monitor can be locked exclusively, just like a Mutex, but it can also be made the object of a Wait operation. The signalling mechanism supports notification of one or more waiting threads.
- To enable more efficient locking when both shared and exclusive access to data is required, Latches are provided.
- Apart from the Thread synchronisation primitives described above, the library also provides a ThreadPool for the situation when it is inefficient to create a thread exclusively for a particular task, and it is desirable to share a pool of threads for executing multiple tasks.
Design Principles
The DM1 Threads library was designed with the following principles in mind:
1. Implement the bare minimum that is required. This Threads library does not aim to be a comprehensive threads package.
2. Avoid complex algorithms. If a particular construct is hard to implement correctly on all platforms, avoid it.
3. Document the library.
4. Avoid low level code, such as assembler code to implement Spin locks. Rely on the libraries provided by the Operating System.
5. Avoid holding Mutexes beyond function calls. A DM1 Thread library function will not hold any Mutex locks when it returns.
6. Avoid using clever C++ techniques wherever possible. (Unfortunately, some cleverness is required to implement the Thread class correctly).
7. Avoid dependency on external libraries. The DM1 library only requires the standard C library, apart from native Threads functionality.
8. Always report an error as soon as it is discovered.
9. Insert debug messages that can be switched on at run-time.
10. Do not throw exceptions from destructors because these might be executing as a result of an uncaught exception.
11. Never let an error go unreported.
Download (0.23MB)
Added: 2006-02-17 License: GPL (GNU General Public License) Price:
1344 downloads
Inter-Thread Communication 1.1.3
Inter-Thread Communication (ITC) aims to make it exceedingly easy to call functions in other threads. more>>
Inter-Thread Communication (ITC) aims to make it exceedingly easy to call functions in other threads.
The lexer does all the work, so just run the lexer on your headers, then call the stub functions.
In addition, it also provides a complete threading API, with the four threading primitives and a high speed threadsafe FIFO class.
Enhancements:
- It add support for GCC 4.x, and the build system is fixed.
<<lessThe lexer does all the work, so just run the lexer on your headers, then call the stub functions.
In addition, it also provides a complete threading API, with the four threading primitives and a high speed threadsafe FIFO class.
Enhancements:
- It add support for GCC 4.x, and the build system is fixed.
Download (0.41MB)
Added: 2006-07-06 License: GPL (GNU General Public License) Price:
1214 downloads
Thread Safe Template Library 1.1.0
Thread Safe Template Library (TSTL) is a C++ library that provides thread-safe storage data structures without global locking. more>>
Thread Safe Template Library (TSTL) is a C++ library that provides thread-safe storage data structures without global locking. The library includes classes for maps based on a non-binary extensible hashing tree for very fast access, a pipe, a timercache, and a fast writer multiple reader guard without global locking (which uses the interlocked Intel instruction set).
Enhancements:
- Porting for x64 AMD, Intel, and MSVC 8.0.
- A new cache template with policy by element number.
- Access to elements has been implemented via a map template.
- The adding policy in the timer cache template has been changed.
- The string hash routine has been optimized.
- The timings in the nbmap.h template have changed.
<<lessEnhancements:
- Porting for x64 AMD, Intel, and MSVC 8.0.
- A new cache template with policy by element number.
- Access to elements has been implemented via a map template.
- The adding policy in the timer cache template has been changed.
- The string hash routine has been optimized.
- The timings in the nbmap.h template have changed.
Download (0.034MB)
Added: 2007-05-03 License: Freeware Price:
908 downloads
MySpace Data Mining Tools 1.1
MySpace Data Mining Tools are a set of Java classes designed to mine information from MySpace profile and blog pages. more>>
MySpace Data Mining Tools are a set of Java classes designed to mine information from MySpace profile and blog pages using a multi-threaded Web page access method.
Enhancements:
- Direct database connectivity via JDBC was implemented for data storage.
- A basic user profile class was created to handle both user data compression and database access.
- Minor bugs were fixed for some of the raw data accessing routines.
<<lessEnhancements:
- Direct database connectivity via JDBC was implemented for data storage.
- A basic user profile class was created to handle both user data compression and database access.
- Minor bugs were fixed for some of the raw data accessing routines.
Download (0.035MB)
Added: 2006-07-30 License: GPL (GNU General Public License) Price:
1191 downloads
FreeBSD 6.2
FreeBSD is an advanced operating system for Intel ia32 compatible, DEC Alpha, and PC-98 architectures. more>>
FreeBSD is an advanced operating system for x86 compatible (including Pentium and Athlon), amd64 compatible (including Opteron, Athlon 64, and EM64T), IA-64, PC-98, Alpha/AXP and UltraSPARC architectures.
It is derived from BSD, the version of UNIX developed at the University of California, Berkeley. It is developed and maintained by a large team of individuals. Additional platforms are in various stages of development.
FreeBSD offers advanced networking, performance, security and compatibility features today which are still missing in other operating systems, even some of the best commercial ones.
FreeBSD makes an ideal Internet or Intranet server. It provides robust network services under the heaviest loads and uses memory efficiently to maintain good response times for thousands of simultaneous user processes.
The quality of FreeBSD combined with todays low-cost, high-speed PC hardware makes FreeBSD a very economical alternative to commercial UNIX workstations. It is well-suited for a great number of both desktop and server applications.
FreeBSD can be installed from a variety of media including CD-ROM, DVD-ROM, floppy disk, magnetic tape, an MS-DOS partition, or if you have a network connection, you can install it directly over anonymous FTP or NFS.
While you might expect an operating system with these features to sell for a high price, FreeBSD is available free of charge and comes with full source code.
It is easy to contribute to FreeBSD. All you need to do is find a part of FreeBSD which you think could be improved and make those changes (carefully and cleanly) and submit that back to the Project by means of send-pr or a committer, if you know one. This could be anything from documentation to artwork to source code.
Even if you are not a programmer, there are other ways to contribute to FreeBSD. The FreeBSD Foundation is a non-profit organization for which direct contributions are fully tax deductible.
Main features:
- A merged virtual memory and filesystem buffer cache continuously tunes the amount of memory used for programs and the disk cache. As a result, programs receive both excellent memory management and high performance disk access, and the system administrator is freed from the task of tuning cache sizes.
- Compatibility modules enable programs for other operating systems to run on FreeBSD, including programs for Linux, SCO UNIX, and System V Release 4.
- Soft Updates allows improved filesystem performance without sacrificing safety and reliability. It analyzes meta-data filesystem operations to avoid having to perform all of those operations synchronously. Instead, it maintains internal state about pending meta-data operations and uses this information to cache meta-data, rewrite meta-data operations to combine subsequent operations on the same files, and reorder meta-data operations so that they may be processed more efficiently. Features such as background filesystem checking and file system snapshots are built on the consistency and performance foundations of soft updates.
- File system snapshots, permitting administrators to take atomic file system snapshots for backup purposes using the free space in the file system, as well as facilitating background fsck, which allows the system to reach multiuser mode without waiting on file system cleanup operations following power outages.
- Support for IP Security (IPsec) allows improved security in networks, and support for the next-generation Internet Protocol, IPv6. The FreeBSD IPSEC implementation includes support for a broad range of accelerated crypto hardware.
- Out of the box support for IPv6 via the KAME IPv6 stack allows FreeBSD to be seamlessly integrated into next generation networking environments. FreeBSD even ships with many applications extended to support IPv6!
- Multi-threaded SMP architecture capable of executing the kernel in parallel on multiple processors, and with kernel preemption, allowing high priority kernel tasks to preempt other kernel activity, reducing latency. This includes a multi-threaded network stack and a multi-threaded virtual memory subsystem. With FreeBSD 6.x, support for a fully parallel VFS allows the UFS file system to run on multiple processors simultaneously, permitting load sharing of CPU-intensive I/O optimization.
- M:N application threading via pthreads permitting threads to execute on multiple CPUs in a scaleable manner, mapping many user threads onto a small number of Kernel Schedulable Entities. By adopting the Scheduler Activation model, the threading approach can be adapted to the specific requirements of a broad range of applications.
- Netgraph pluggable network stack allows developers to dynamically and easily extend the network stack through clean layered network abstractions. Netgraph nodes can implement a broad range of new network services, including encapsulation, tunneling, encryption, and performance adaptation. As a result, rapid prototyping and production deployment of enhanced network services can be performed far more easily and with fewer bugs.
- TrustedBSD MAC Framework extensible kernel security, which allows developers to customize the operating system security model for specific environments, from creating hardening policies to deploying mandatory labeled confidentiality of integrity policies. Sample seucrity policies include Multi-Level Security (MLS), and Biba Integrity Protection. Third party modules include SEBSD, a FLASK-based implementation of Type Enforcement.
- GEOM pluggable storage layer, which permits new storage services to be quickly developed and cleanly integrated into the FreeBSD storage subsystem. GEOM provides a consistent and coherrent model for discovering and layering storage services, making it possible to layer services such as RAID and volume management easily.
- FreeBSDs GEOM-Based Disk Encryption (GBDE), provides strong cryptographic protection using the GEOM Framework, and can protect file systems, swap devices, and other use of storage media.
- Kernel Queues allow programs to respond more efficiently to a variety of asynchronous events including file and socket IO, improving application and system performance.
- Accept Filters allow connection-intensive applications, such as web servers, to cleanly push part of their functionality into the operating system kernel, improving performance.
<<lessIt is derived from BSD, the version of UNIX developed at the University of California, Berkeley. It is developed and maintained by a large team of individuals. Additional platforms are in various stages of development.
FreeBSD offers advanced networking, performance, security and compatibility features today which are still missing in other operating systems, even some of the best commercial ones.
FreeBSD makes an ideal Internet or Intranet server. It provides robust network services under the heaviest loads and uses memory efficiently to maintain good response times for thousands of simultaneous user processes.
The quality of FreeBSD combined with todays low-cost, high-speed PC hardware makes FreeBSD a very economical alternative to commercial UNIX workstations. It is well-suited for a great number of both desktop and server applications.
FreeBSD can be installed from a variety of media including CD-ROM, DVD-ROM, floppy disk, magnetic tape, an MS-DOS partition, or if you have a network connection, you can install it directly over anonymous FTP or NFS.
While you might expect an operating system with these features to sell for a high price, FreeBSD is available free of charge and comes with full source code.
It is easy to contribute to FreeBSD. All you need to do is find a part of FreeBSD which you think could be improved and make those changes (carefully and cleanly) and submit that back to the Project by means of send-pr or a committer, if you know one. This could be anything from documentation to artwork to source code.
Even if you are not a programmer, there are other ways to contribute to FreeBSD. The FreeBSD Foundation is a non-profit organization for which direct contributions are fully tax deductible.
Main features:
- A merged virtual memory and filesystem buffer cache continuously tunes the amount of memory used for programs and the disk cache. As a result, programs receive both excellent memory management and high performance disk access, and the system administrator is freed from the task of tuning cache sizes.
- Compatibility modules enable programs for other operating systems to run on FreeBSD, including programs for Linux, SCO UNIX, and System V Release 4.
- Soft Updates allows improved filesystem performance without sacrificing safety and reliability. It analyzes meta-data filesystem operations to avoid having to perform all of those operations synchronously. Instead, it maintains internal state about pending meta-data operations and uses this information to cache meta-data, rewrite meta-data operations to combine subsequent operations on the same files, and reorder meta-data operations so that they may be processed more efficiently. Features such as background filesystem checking and file system snapshots are built on the consistency and performance foundations of soft updates.
- File system snapshots, permitting administrators to take atomic file system snapshots for backup purposes using the free space in the file system, as well as facilitating background fsck, which allows the system to reach multiuser mode without waiting on file system cleanup operations following power outages.
- Support for IP Security (IPsec) allows improved security in networks, and support for the next-generation Internet Protocol, IPv6. The FreeBSD IPSEC implementation includes support for a broad range of accelerated crypto hardware.
- Out of the box support for IPv6 via the KAME IPv6 stack allows FreeBSD to be seamlessly integrated into next generation networking environments. FreeBSD even ships with many applications extended to support IPv6!
- Multi-threaded SMP architecture capable of executing the kernel in parallel on multiple processors, and with kernel preemption, allowing high priority kernel tasks to preempt other kernel activity, reducing latency. This includes a multi-threaded network stack and a multi-threaded virtual memory subsystem. With FreeBSD 6.x, support for a fully parallel VFS allows the UFS file system to run on multiple processors simultaneously, permitting load sharing of CPU-intensive I/O optimization.
- M:N application threading via pthreads permitting threads to execute on multiple CPUs in a scaleable manner, mapping many user threads onto a small number of Kernel Schedulable Entities. By adopting the Scheduler Activation model, the threading approach can be adapted to the specific requirements of a broad range of applications.
- Netgraph pluggable network stack allows developers to dynamically and easily extend the network stack through clean layered network abstractions. Netgraph nodes can implement a broad range of new network services, including encapsulation, tunneling, encryption, and performance adaptation. As a result, rapid prototyping and production deployment of enhanced network services can be performed far more easily and with fewer bugs.
- TrustedBSD MAC Framework extensible kernel security, which allows developers to customize the operating system security model for specific environments, from creating hardening policies to deploying mandatory labeled confidentiality of integrity policies. Sample seucrity policies include Multi-Level Security (MLS), and Biba Integrity Protection. Third party modules include SEBSD, a FLASK-based implementation of Type Enforcement.
- GEOM pluggable storage layer, which permits new storage services to be quickly developed and cleanly integrated into the FreeBSD storage subsystem. GEOM provides a consistent and coherrent model for discovering and layering storage services, making it possible to layer services such as RAID and volume management easily.
- FreeBSDs GEOM-Based Disk Encryption (GBDE), provides strong cryptographic protection using the GEOM Framework, and can protect file systems, swap devices, and other use of storage media.
- Kernel Queues allow programs to respond more efficiently to a variety of asynchronous events including file and socket IO, improving application and system performance.
- Accept Filters allow connection-intensive applications, such as web servers, to cleanly push part of their functionality into the operating system kernel, improving performance.
Download (616.3MB)
Added: 2007-01-15 License: BSD License Price:
1071 downloads
Other version of FreeBSD
License:BSD License
Perlbug 2.93
Perlbug is a Perl module that contains PerlBug database specification. more>>
Perlbug is a Perl module that contains PerlBug database specification.
Bug, and problem management, tracking system, written in perl.
Currently using Mysql, probably running on Linux with Apache.
For installation instructions see the INSTALL file.
SYNOPSIS
Note that the given addresses are configurable for individual sites, treat these examples of current usage as defaults.
New bugs are created by mailing perlbug@perl.org or perlbug@perl.com
Said bug is entered in the database, and given a new bugid, the mail is then forwarded to perl5-porters with the bugid in the subject line..
perl5-porters(p5p) is continously tracked for relevant mails to attach to said bug.
There are web(http://bugs.perl.org), email(bugdb@perl.org and help@bugs.perl.org), command line(bugdb) and Tk (bugtk) frontends to query and administrate the bugs. See scripts below.
Regular overviews are emailed to p5p, and outstanding bugs are mailed to active admins for their attention.
All modules have perldocs embedded, to browse at your leisure.
perl -MPerlbug::Base -e "print
Perlbug::Interface::Cmd->new()->object(bug)->read(19870502.007)->format(A)"
<<lessBug, and problem management, tracking system, written in perl.
Currently using Mysql, probably running on Linux with Apache.
For installation instructions see the INSTALL file.
SYNOPSIS
Note that the given addresses are configurable for individual sites, treat these examples of current usage as defaults.
New bugs are created by mailing perlbug@perl.org or perlbug@perl.com
Said bug is entered in the database, and given a new bugid, the mail is then forwarded to perl5-porters with the bugid in the subject line..
perl5-porters(p5p) is continously tracked for relevant mails to attach to said bug.
There are web(http://bugs.perl.org), email(bugdb@perl.org and help@bugs.perl.org), command line(bugdb) and Tk (bugtk) frontends to query and administrate the bugs. See scripts below.
Regular overviews are emailed to p5p, and outstanding bugs are mailed to active admins for their attention.
All modules have perldocs embedded, to browse at your leisure.
perl -MPerlbug::Base -e "print
Perlbug::Interface::Cmd->new()->object(bug)->read(19870502.007)->format(A)"
Download (0.49MB)
Added: 2007-05-09 License: Perl Artistic License Price:
899 downloads
POE::Component::Pool::Thread 0.015
POE::Component::Pool::Thread is a POE Managed Boss/Worker threadpool. more>>
POE::Component::Pool::Thread is a POE Managed Boss/Worker threadpool.
SYNOPSIS
use POE qw( Component::Pool::Thread );
POE::Component::Pool::Thread->new
( MinFree => 2,
MaxFree => 5,
MaxThreads => 15,
StartThrneads => 5,
Name => "ThreadPool",
EntryPoint => &thread_entry_point,
CallBack => &result_handler,
inline_states => {
_start => sub {
my ($kernel, $heap) = @_[ KERNEL, HEAP ];
# We are inside the component session
$kernel->yield(run => @arguements);
$kernel->post(ThreadPool => run => @arguements);
},
}
);
sub thread_entry_point {
my (@arguements) = @_;
return 1;
}
sub result_handler {
my ($kernel, $result) = @_[ KERNEL, ARG0 ];
$result == 1;
}
This is an expand-on-demand thread pool managed through a POE session in a manner that does not interfer with cooperative multitasking. A single pipe is created, each thread communicates its state to the main process through this pipe. No serialization occurs (these are threads, not child processes), so execution is very fast.
<<lessSYNOPSIS
use POE qw( Component::Pool::Thread );
POE::Component::Pool::Thread->new
( MinFree => 2,
MaxFree => 5,
MaxThreads => 15,
StartThrneads => 5,
Name => "ThreadPool",
EntryPoint => &thread_entry_point,
CallBack => &result_handler,
inline_states => {
_start => sub {
my ($kernel, $heap) = @_[ KERNEL, HEAP ];
# We are inside the component session
$kernel->yield(run => @arguements);
$kernel->post(ThreadPool => run => @arguements);
},
}
);
sub thread_entry_point {
my (@arguements) = @_;
return 1;
}
sub result_handler {
my ($kernel, $result) = @_[ KERNEL, ARG0 ];
$result == 1;
}
This is an expand-on-demand thread pool managed through a POE session in a manner that does not interfer with cooperative multitasking. A single pipe is created, each thread communicates its state to the main process through this pipe. No serialization occurs (these are threads, not child processes), so execution is very fast.
Download (0.007MB)
Added: 2007-04-18 License: Perl Artistic License Price:
920 downloads
Valgrind 3.3.0
an award-winning instrumentation framework for building dynamic analysis tools more>> Valgrind is an award-winning instrumentation framework for building dynamic analysis tools. There are Valgrind tools that can automatically detect many memory management and threading bugs, and profile your programs in detail. You can also use Valgrind to build new tools.
The Valgrind distribution currently includes five production-quality tools: a memory error detector, a thread error detector, a cache and branch-prediction profiler, a call-graph generating cache profiler, and a heap profiler. It also includes two experimental tools: a data race detector, and an instant memory leak detector. It runs on the following platforms: X86/Linux, AMD64/Linux, PPC32/Linux, PPC64/Linux.
Valgrind is Open Source / Free Software, and is freely available under the GNU General Public License.<<less
Download (4.31MB)
Added: 2009-04-20 License: Freeware Price: Free
191 downloads
Other version of Valgrind
License:GPL (GNU General Public License)
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above threading bugs search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed