Implementing thread in UNIX


Login or Register for Dates, Times and to Reply

 
Thread Tools Search this Thread
# 1  
Implementing thread in UNIX

Hi

For our load testing , we are using stubs (unix shell script) which send the response to the request coming from the application. As the unix stub is single threaded , it is responding to only one request whereas multiple requests come in parallely.

I haven't worked on thread concepts till now. Would like to know if multithreading can be achieved in shell script for e.g if i start up the shell script process, multi thread can handle the parallel requests coming in and send response parallely.

Would be fo great if sample code snippet is given. Thanks in advance.
# 2  
Please note that while posting, you might want to post your environment like the U*IX variant you are using and also the shell you are using.

Assuming, you are using POSIX compliant shell like Bash or KSH, you can implement threads by forking processes using & operator:

Code:
thread () {
           # your thread code goes here
}

for i in {1..5}; do
          thread &
done

This forks 5 processes (or threads) with the same code.
This User Gave Thanks to admin_xor For This Post:
# 3  
Implementing thread in UNIX

Thanks a lot for this snippet.

I tried one sample program like below:

Code:
 
#!/bin/ksh
date=`date +%y%m%d%H%M%S`
thread() {
echo "test" >> /tmp.txt
echo $date >> /tmp.txt // This to get the time logged for different iterations and see if all processed at same time
}
for i in {1..5}; do
thread &
done

In the output file - i could see the values written only for the 1st iteration but not for the subsequent iteration. Smilie
Does this mean the shell is non-POSIX compliant? or how to test whether it is POSIX compliant and whether it works for the sample script.
Does my sample program makes any sense for testing this functionality and if it is how to confirm that multi-threading is acheived using a sample script?

Last edited by fpmurphy; 03-19-2012 at 11:34 PM.. Reason: code tags please!
# 4  
You need to put a wait statement after the done statement:
Code:
done
wait

# 5  
Tried putting wait . Still its not working Smilie
# 6  
What output do you get?
By the way, shell does not support multithreading just multitasking (by forking processes). If you are using ksh88, it is not fully POSIX compliant, ksh93 would be. But I think this should work in ksh88 too. Your temporary file is in an awkward directory (the root directory) can you write there? In shell you use # for comments, not // .

{1..5} is not POSIX. You would need something like this:

Code:
i=0;
while [ $((i+=1)) -le 5 ]; do
  thread &
done
wait

or

Code:
for i in 1 2 3 4 5; do

Otherwise the shell would execute the loop only once.

Last edited by Scrutinizer; 03-19-2012 at 09:14 AM..
Login or Register for Dates, Times and to Reply

Previous Thread | Next Thread
Thread Tools Search this Thread
Search this Thread:
Advanced Search

Test Your Knowledge in Science: Gadgets
Difficulty: Easy
Microphones can be used not only to pick up sound, but also to project sound similar to a speaker.
True or False?

7 More Discussions You Might Find Interesting

1. Forum Support Area for Unregistered Users & Account Problems

UNIX.com links from Google yield invalid thread error

If one enters a Google search query like site:unix.com mysql php and clicks on the resulting link, one gets the message below: vBulletin Message No Thread specified. If you followed a valid link, please notify the administrator (2 Replies)
Discussion started by: Unregistered
2 Replies

2. Shell Programming and Scripting

What's UNIX Expert's suggestion for this thread ?

Assume that 100 file's of type .txt are saved in directory in which, 40 .txt files having ID 225 in column x 10 .txt files having ID 220 in column x 30 .txt files having ID 115 in column x and remaining 20 .txt file's having UNIQUE ID say 226,227,228,229,230....first I want to read only files... (8 Replies)
Discussion started by: Akshay Hegde
8 Replies

3. Shell Programming and Scripting

Read from a file in unix(Continue from previous thread)

Hi This is continuation of previos thread status=running username=abc password=123456 server=linux The script was made which is used to capture the data from file ./scr test status It will give result running I have a case like status = running username=abc password=123456... (14 Replies)
Discussion started by: parthmittal2007
14 Replies

4. Shell Programming and Scripting

Measure thread execution (in C, unix)

Hi, I have a simulation program which creates two threads and I would like to know if I can measure the time of each individual thread. Threads communicate (I use pthread to manage them) and I want to measure communication time. I found a solution with clock_gettime and CLOCK_THREAD_CPUTIME_ID... (32 Replies)
Discussion started by: Tinkh
32 Replies

5. UNIX Benchmarks

unix benchmark thread?

Type: UltraSPARC IIIi 1,593 Mhz x2 Ram: 16G Disk: 2*70G fw scsi drives Load: db application kernel: Sunos5.10 pgms: compiled Sun cc -O2 ============================================================== BYTE UNIX Benchmarks (Version 3.11) System -- SunOS sun.spmbox.com 5.10... (2 Replies)
Discussion started by: mr_manny
2 Replies

6. Forum Support Area for Unregistered Users & Account Problems

How to post a new thread (Regarding Unix related doubts) in Unix Forums

How to post a new thread (Regarding Unix related doubts) in Unix Forums. I registered my id but I am unable to post my Questions to Forum. Thanks & Regards, indusri (1 Reply)
Discussion started by: indusri
1 Replies

7. UNIX for Dummies Questions & Answers

cliched unix help thread

Windows blows. I'm poor so unix is looking like a great alterative (expecially after my former roommate showed me most of the things it can do). Right now I'm looking at Debian or some other Unix kernel that would run nicley on my computer. But the problem we had with installing it while he was... (3 Replies)
Discussion started by: beardsman
3 Replies

Featured Tech Videos