06-14-2009
Basic multithreaded program
I'd like to write a program (I'm flexible on language; C/C++ was my original idea but a scripting language would probably be better) that runs hundreds of programs, but only N = 4 (say) at a time. The idea is to keep all the cores on a multicore machine busy.
How can I do this? In particular, I'd like a library call I can make in some appropriate language that can
- Start a new thread
- Start a command-line process in the thread with arbitrary arguments
- Recognize when the process is complete, return information to the main thread and terminate the helper/slave thread
- Ideally, send and receive information on standard in/out
This seems like a very basic thing to ask; I'm just looking for something that would make this simple. I'm probably going to write many programs like this for various tasks, and I thought it would be good to ask around before diving into something that's not quite appropriate. I started reading about the (new) Python threading earlier before I thought to ask for advice/help.
9 More Discussions You Might Find Interesting
1. Programming
In Tru64 Unix, the 'errno' variable is not thread safe.
Could anybody help me about how to make it thread safe or how to check 'errno' in a Multithreaded program ????
The Programming process is like this.
There are some definite number of threads having their own task.
There is one... (2 Replies)
Discussion started by: S.Vishwanath
2 Replies
2. Programming
Iam writing a script for my sisters friends little brother
i want the program to say hello lets say his name is Joe and ask him how he is and he can write a reply back saying fine and then it replys "Iam happy you are (his response) today
and then it goes into a basic math where he can put in a... (9 Replies)
Discussion started by: perleo
9 Replies
3. Shell Programming and Scripting
Hello. I'm trying to write a shell script that will take files that have .tar, .tar.gz, .tar.Z, .gz, .Z and .zip file extensions and uncompress and unarchive them. The script should be able to take multiple arguments. So far I can write a script using the case command that will do this but it will... (3 Replies)
Discussion started by: SeanWuzHere
3 Replies
4. Linux
hello,
here I am copying my code...
I am using two threads for reading and writing at com ports....one for reading and one for writing...in read thread I am using select() api....and polling again and again if there is some data to be read....but select is not returning any positive value so... (0 Replies)
Discussion started by: arunchaudhary19
0 Replies
5. Shell Programming and Scripting
Hello all
is there any way in unix to execute command in multithreaded way
without doing it in java or cpp
can one of the scripts handle multithread execution ?
i need to test server requests ( corba ) in multithread
Thanks (0 Replies)
Discussion started by: umen
0 Replies
6. UNIX for Advanced & Expert Users
hi all,
i am using pthreads.
What will happen if a thread does a fork?
will all the threads are duplicated for the new process or only the called thread is duplicated?
are the resources shared across the processes?
thank you (0 Replies)
Discussion started by: skyrulz
0 Replies
7. HP-UX
Hi,
The "program monitor" command in BT-Basic prompt you for a user name and a password.
How can I grant access only to certain users ?
Thank you. (0 Replies)
Discussion started by: fosiceanu
0 Replies
8. Homework & Coursework Questions
I am a newbie to UNIX. I'm learning UNIX on my own, just trying to get the jerk of how things work in UNIX environment. I am familiar with Windows environment.
Can anyone pls write simple 'envprint' programs to :
1) List all the environment Information (using the -l or --l options)
2) ... (1 Reply)
Discussion started by: agup17
1 Replies
9. Homework & Coursework Questions
Hello! I'd like some help with this assignment.
1. The problem statement, all variables and given/known data:
1)Write a shell script that can uses two types of files as inputs, apache.log and apache.error.log
2)Make it so that you can switch between the two file types
3)Make it so that the... (5 Replies)
Discussion started by: malfiory
5 Replies
LEARN ABOUT DEBIAN
tgkill
TKILL(2) Linux Programmer's Manual TKILL(2)
NAME
tkill, tgkill - send a signal to a thread
SYNOPSIS
int tkill(int tid, int sig);
int tgkill(int tgid, int tid, int sig);
Note: There are no glibc wrappers for these system calls; see NOTES.
DESCRIPTION
tgkill() sends the signal sig to the thread with the thread ID tid in the thread group tgid. (By contrast, kill(2) can be used to send a
signal only to a process (i.e., thread group) as a whole, and the signal will be delivered to an arbitrary thread within that process.)
tkill() is an obsolete predecessor to tgkill(). It allows only the target thread ID to be specified, which may result in the wrong thread
being signaled if a thread terminates and its thread ID is recycled. Avoid using this system call.
These are the raw system call interfaces, meant for internal thread library use.
RETURN VALUE
On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
ERRORS
EINVAL An invalid thread ID, thread group ID, or signal was specified.
EPERM Permission denied. For the required permissions, see kill(2).
ESRCH No process with the specified thread ID (and thread group ID) exists.
EAGAIN The RLIMIT_SIGPENDING resource limit was reached and sig is a real-time signal.
EAGAIN Insufficient kernel memory was available and sig is a real-time signal.
VERSIONS
tkill() is supported since Linux 2.4.19 / 2.5.4. tgkill() was added in Linux 2.5.75.
CONFORMING TO
tkill() and tgkill() are Linux-specific and should not be used in programs that are intended to be portable.
NOTES
See the description of CLONE_THREAD in clone(2) for an explanation of thread groups.
Glibc does not provide wrappers for these system calls; call them using syscall(2).
SEE ALSO
clone(2), gettid(2), kill(2), rt_sigqueueinfo(2)
COLOPHON
This page is part of release 4.15 of the Linux man-pages project. A description of the project, information about reporting bugs, and the
latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.
Linux 2017-09-15 TKILL(2)