03-10-2008
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..
10 More Discussions You Might Find Interesting
1. Programming
Hi,
I want to validate that a file is a socket file on Linux. I know I can do this using the S_ISSOCK macro, but I am not sure how to get the file descriptor for the socket file.
For example, I know that /tmp/mapping-foo is a socket file. In Python I can do something like this:
>>> import... (2 Replies)
Discussion started by: goon12
2 Replies
2. Programming
I have set the receive buffer size of socket to max.
setsockopt(sd,SOL_SOCKET, SO_RCVBUF,&max,optval);
Am reading data from the socket in a loop(say max 100 bytes per recv)
while(1)
{
int rlen=recv(sd,(void *)buf, 100 , 0);
//err handle and processing
}
Assume my process is slow... (2 Replies)
Discussion started by: johnbach
2 Replies
3. Solaris
Hi All
I have a separate thread ListenerThread having a socket listening to info broadcasted by some remote server. This is created in my main thread.
Because of requirements, once the separate thread is started I need to avoid any blocking function on the main thread. Once it comes to the... (2 Replies)
Discussion started by: manustone
2 Replies
4. Solaris
I have a query related to the functioning of poll() system call on solaris and linux platforms.
When the client is abnormally terminated, it is observed that on Linux the socket is immediately closed and the server gets ECONNREFUSED.
But in case of Solaris it is observed that the socket is not... (0 Replies)
Discussion started by: Amarjeet_7
0 Replies
5. Programming
char name;
printf ("Welcome to the server \n");
printf ("Enter user name: \n");
scanf ("%c", &name);
how can client send name to server:what should be the code?
int send ( int sid , const char ∗buffer Ptr , int len , int f l a g )
how can client receive ack from... (1 Reply)
Discussion started by: saiful_911
1 Replies
6. Programming
How to know whether socket is ready for write.
select(maxfds, (fd_set *)NULL, &writefds, NULL, &timeout);
By default socket is set for write without checking whether it would block or not? If so how do I know my FD is ready for writing. (3 Replies)
Discussion started by: satish@123
3 Replies
7. Programming
Hi all,
Can I create multiple threads using single thread_id
like
pthread_t thread_id;
pthread_create(&thread_id, NULL, &print_xs, NULL);
pthread_create(&thread_id, NULL, &print_ys, NULL);
pthread_create(&thread_id, NULL, &print_zs, NULL);
pthread_join(thread_id, NULL);
what... (2 Replies)
Discussion started by: zing_foru
2 Replies
8. IP Networking
Hello to all,
I have below function, but the thread will be bloked at the line
delete pListenSocket; // Close and delete
If I put some cpu timing switching function prior to it, then no blocking pop up.
printf("xyz\n"); // or sleep(100);
delete pListenSocket; // Close and... (1 Reply)
Discussion started by: shinypro
1 Replies
9. Solaris
I have BIND 9.8.1-P1 cache only DNS server running in Solaris 10. I have upgraded the same from 9.6.1 to 9.8.1-P1. Now i am facing "file descriptor exceeds limit (4096/4096)" error frequently on the server.
Please help me on this issue! (1 Reply)
Discussion started by: sandeep.tk
1 Replies
10. Shell Programming and Scripting
Hi,
Input
7488 7389 chr1.fa chr1.fa
3546 9887 chr5.fa chr9.fa
7387 7898 chrX.fa chr3.fa
7488 7389 chr21.fa chr3.fa
7488 7389 chr1.fa chr1.fa
3546 9887 chr9.fa chr5.fa
7898 7387 chrX.fa chr3.fa
Desired Output
7488 7389 chr1.fa chr1.fa 2
3546 9887 chr5.fa chr9.fa 2... (2 Replies)
Discussion started by: jacobs.smith
2 Replies
LEARN ABOUT CENTOS
tevent_queue_tutorial
tevent_queue_tutorial(3) tevent tevent_queue_tutorial(3)
NAME
tevent_queue_tutorial - The tevent_queue tutorial
Introduction
A tevent_queue is used to queue up async requests that must be serialized. For example writing buffers into a socket must be serialized.
Writing a large lump of data into a socket can require multiple write(2) or send(2) system calls. If more than one async request is
outstanding to write large buffers into a socket, every request must individually be completed before the next one begins, even if multiple
syscalls are required.
To do this, every socket gets assigned a tevent_queue struct.
Creating a serialized async request follows the usual convention to return a tevent_req structure with an embedded state structure. To
serialize the work the requests is about to so, instead of directly starting or doing that work, tevent_queue_add must be called. When it
is time for the serialized async request to do its work, the trigger callback function tevent_queue_add was given is called. In the example
of writing to a socket, the trigger is called when the write request can begin accessing the socket.
How does this engine work behind the scenes? When the queue is empty, tevent_queue_add schedules an immediate call to the trigger callback.
The trigger callback starts its work, likely by starting other async subrequests. While these async subrequests are working, more requests
can accumulate in the queue by tevent_queue_add. While there is no function to explicitly trigger the next waiter in line, it still works:
When the active request in the queue is done, it will be destroyed by talloc_free. Talloc_free of an serialized async request that had been
added to a queue will trigger the next request in the queue via a talloc destructor attached to a child of the serialized request. This way
the queue will be kept busy when an async request finishes.
Example
* Metze: Please add a code example here.
*
Version 0.9.8 Tue Jun 17 2014 tevent_queue_tutorial(3)