multiTasking using fork


 
Thread Tools Search this Thread
Top Forums Programming multiTasking using fork
# 1  
Old 07-04-2005
Data multiTasking using fork

i'm very new to UNIX C programming.
I want to replace a very slow forloop in my program so that my tasks be run parallely:


vector <string>inputs;
...populate inputs with 12 strings
for (int i=0;i<12;i++)
process(inputs[i]); //process sends a request to remote network;takes up a lot of time;

I need to write a program that would start 12 parallel calls to the function process, but am having hard time figuring out how to use fork for this. using forloop with fork turned out to be a nightmare!

can anyone point me to useful sample code?
thank you so much! Smilie
# 2  
Old 07-05-2005
You could use threads for this, but I never have, so someone else would have to help you there.

Heres how you could use fork in the for loop:
Code:
int pids[12]; // declare this with your inputs array

for(i=0;i<12;i++) {
   pids[i]=fork();
   if(pids[i]==-1) {
      //do whatever you want here -  your fork has failed
   }
   if(pids[i]=0) {
      process(inputs[i]);
   }
}

And you should have a signal handler that is called when any of the children exit.
# 3  
Old 07-05-2005
You may be creating more problems with this solution, than you are solving. I assume it is a working piece of code, albeit slow. Introducing new faults, or even breaking it entirely would be a big NO, NO!

Excercise caution with your approach and test the results from the old code against the new code to highlight any discrepancies.

Also, just an idea, but rather than going complicated, go simple. Use the code you have to accept input for only one request. Allow your (single argument) process to be called as many times as necessary from the OS i.e. the shell. This way you let the OS worry about forking, multi-tasking and such. As I have said, just an idea.

Hope this helps

MBB
# 4  
Old 07-07-2005
Depending on what you need, its best to use thread ...

Code:
pthread_t  mythreads[12];
for (int i=0;i<12;i++) 
   pthread_create(mythreads+i, NULL, process, inputs+i);

But then, be warned that more problem will occuer when dealing with threads and really hard as a he** to debug Smilie

Online man page is always the right direction to look for ...

Good luck
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

fork()

I'm trying to run a simple test on how to use fork(), i'm able to execute the child process first then the parent, but how can I execute parent then child..? Thanks! (1 Reply)
Discussion started by: l flipboi l
1 Replies

2. Programming

Fork()

does fork() spawn only the parent process, what if fork() is looped, does it spawn the parent and the child? (4 Replies)
Discussion started by: Peevish
4 Replies

3. Programming

Fork and \n

Hi, I wrote a simple program for understanding the fork command. The code is as below int main(void) { fork(); printf("hi 1 \n"); fork(); printf("hi 2 \n"); fork(); printf("hi 3 \n"); } I am getting a variation in the number of times the printf is called if i remove the \n from each... (2 Replies)
Discussion started by: xyz123456
2 Replies

4. Programming

fork() help

Hi everybody, I wanna write a code to understand how fork works. my target -------------- -Parent creates a file(called temp) and writes into this file "1".Then it closes the file. -Then parent creates a child and wait until execution of this child ends. -Then child opens the same... (3 Replies)
Discussion started by: alexicopax
3 Replies

5. Programming

Fork or what?

Hello all. I'm developing a filetransfer application, which is supposed to work sort of like dcc, with multiple transfers etc. Now i wonder what the best way to manage the transfers is. Should i fork() for each new transfer, hogging loads of memory or use pthreads? Maybe I can use select to see... (0 Replies)
Discussion started by: crippe
0 Replies

6. Programming

Multitasking with fork()

Looking for a shell script to do the following : -- I have 100's of process to execute on Sun. -- These processes are not dependent on each other and can be executed in parallel. -- I cannot execute them ALL at once to avoid the system resource to be occupied by these processes. I want to... (1 Reply)
Discussion started by: vangaru
1 Replies

7. Programming

fork()

#include <stdio.h> #include <string.h> #include <sys/types.h> #define MAX_COUNT 200 #define BUF_SIZE 100 void main(void) { pid_t pid; int i; char buf; fork(); pid = getpid(); for (i = 1; i <= MAX_COUNT; i++) { sprintf(buf,... (2 Replies)
Discussion started by: MKSRaja
2 Replies

8. UNIX for Advanced & Expert Users

OpenBSD bad Multitasking?

Hi! Ive been following a OpenBSD thread from Dec 2003 "Issues multitasking during disk IO", and no "good" answer has still been given. I experience the same problems as he did. But ill explain my problem below for you who doesnt want to read a hole new thread. First off, i been using OpenBSD... (2 Replies)
Discussion started by: Tomtefan
2 Replies

9. Shell Programming and Scripting

Multitasking in korn shell

Hi, I have to read a text file and start "N" number of programs at a time in back ground.when any one of the job is completd then i have to pass new job into that process. How can i start Multiple jobs at a time? How can i Track Jobs and move other jobs when one job... (7 Replies)
Discussion started by: sureshraju_ma
7 Replies

10. UNIX for Dummies Questions & Answers

Fork

What is a fork? Why would one create a fork? What are the advantages and disadvantages of using a fork? Please advise. Thank You. Deepali (5 Replies)
Discussion started by: Deepali
5 Replies
Login or Register to Ask a Question