The UNIX and Linux Forums  

Go Back   The UNIX and Linux Forums > Special Forums > IP Networking
Google UNIX.COM


IP Networking Questions involving TCP/IP, Routers, Hubs, Network protocols, etc go here.

More UNIX and Linux Forum Topics You Might Find Helpful
Thread Thread Starter Forum Replies Last Post
Executing Multiple .SQL Files from Single Shell Script file anushilrai Shell Programming and Scripting 3 04-07-2008 07:09 AM
how to divide single large log file into multiple files. kamleshm Shell Programming and Scripting 1 01-15-2008 03:33 PM
Copy single file to multiple directories kthatch UNIX for Dummies Questions & Answers 2 11-11-2007 02:10 PM
How to Write Linux Friendly Async Socket I/O siegfried High Level Programming 3 05-25-2007 04:10 AM
read/write socket error gio High Level Programming 2 04-16-2007 08:52 PM

Reply
 
Submit Tools LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 03-09-2008
Registered User
 

Join Date: Feb 2008
Location: Nagercoil
Posts: 4
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
Exclamation Can we write a multiple thread to receive from a single socket file descriptor

Hi Friends,
I have written a program which will listener for more than 1000 requests per second from a single socket descriptor and then it will process those requestes. Its taking X amount of time. Now i want to reduce that time. Will I can write multiple threads to receive the request from the same socket file descriptor. Is it possible..

please help me..
Reply With Quote
Forum Sponsor
  #2 (permalink)  
Old 03-10-2008
Registered User
 

Join Date: Mar 2006
Location: Ahmedabad
Posts: 112
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
Use AIO or Thread Pool

Multiple threads can definately listen to single socket. All threads can be blocked on "select" or "poll" system-call. Now depending on number of CPU your that many number of threads will come out of select/poll system call then if its TCP you mandatory call "accept" system-call. Here only 1 thread will succeed and remaining threads will fails which again go back to select/poll system-call. Now if instead of TCP you using UDP then same above syncronization will happen at "read" system-call and remaining threads has to go back at select/poll. Pseudo code will look like

while(1) {
select(sockfd);
rs = accept(sockfd);
if(rs == -1) continue;
thread_function();
}

But from past-experience. I'd recommend you to re-design of your software with producer and worker concept. One thread will read data on socket then it will select a thread from pool and assign work to that.
From our statistics I'd say 1GHz CPU can efficiently hangle 25 complex threads only!!! And for multithreads instead of deploying higher capacity of CPU you should go for higher multi-core procerrors only!!!
Reply With Quote
  #3 (permalink)  
Old 03-17-2008
Registered User
 

Join Date: Jun 2003
Location: Greenland
Posts: 1
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!Reddit! Stumble this Post!Spurl this Post!
I agree with

-------------------------------------------------------------

I'd recommend you to re-design of your software with producer and worker concept. One thread will read data on socket then it will select a thread from pool and assign work to that.

----------------------------------------------------------------
Reply With Quote
Google UNIX.COM
Reply

Thread Tools
Display Modes


The 50 most popular UNIX and Linux searches.
Google Search Cloud for The UNIX and Linux Forums
421 service not available, remote server has closed connection ^m automate ftp autosys awk trim bash eval bash exec bash for loop command copy/move folder in unix couldn't set locale correctly curses.h cut command in unix daemon process export command in unix find grep find mtime find null character in a unix file grep multiple lines grep or grep recursive hp-ux ifconfig inaddr_any inappropriate ioctl for device lynx javascript mailx attachment mget mtime ping port remove first character from string in k shell replace space by comma , perl script scp recursive segmentation fault(coredump) sftp script snoop unix stale nfs file handle syn_sent tar exclude tar extract to folder test: argument expected unix unix .profile unix forum unix forums unix interview questions unix simulator unix.com vi select all vi substitute vi+substitute+end+of+line+character while loop within while loop shell script


All times are GMT -7. The time now is 04:49 AM.


Powered by: vBulletin, Copyright ©2000 - 2006, Jelsoft Enterprises Limited.
The UNIX and Linux Forums Content Copyright ©1993-2008 The CEP Blog All Rights Reserved -Ad Management by RedTyger Visit The Global Fact Book

Content Relevant URLs by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101