logo
down
shadow

C socket API is thread safe?


C socket API is thread safe?

By : danpierce_1
Date : October 20 2020, 11:12 AM
wish of those help Sockets are not part of C++ Standard so it depends on implementation. Generally they are not thread safe since send is not an atomic operation. Check this discussion for additional information.
EDIT: OS could have or couldn't have internal lock for protecting internal structures. It depends on implementation. So you should not count on it.
code :


Share : facebook icon twitter icon
Is a Java socket's PrintWriter thread safe?

Is a Java socket's PrintWriter thread safe?


By : Bradford
Date : March 29 2020, 07:55 AM
this one helps. It's a poor design to have these multiple PrintWriters on the same stream. Really you want at least the object the calls them to be synchronised (or thread confined).
However, assuming for some reason you do want multiple PrintWriters:
Is .NET Socket Send()/Receive() thread-safe?

Is .NET Socket Send()/Receive() thread-safe?


By : liviur
Date : March 29 2020, 07:55 AM
This might help you Quote from the MSDN docs about the Socket class (under Thread Safety, towards the end of the page):
Are Asynchronous writes to a socket thread safe?

Are Asynchronous writes to a socket thread safe?


By : Shyamal Karmakar
Date : March 29 2020, 07:55 AM
wish helps you I found a smiliar post on the MSDN forum which seems to answer to your question.
You can queue multiple BeginSends at the same time. You don't need to lock
Is ip::tcp::socket.close() thread safe?

Is ip::tcp::socket.close() thread safe?


By : Omar Abu Shakra
Date : March 29 2020, 07:55 AM
To fix this issue In general, it is unsafe to make concurrent calls to the same socket object1. The async_read() composed operation is composed of zero or more intermediate async_read_some() operations. These intermediate operations are only initiated in threads that are currently calling io_service::run(). The internal threads are fairly transparent, and none of the threads listed in the Platform-Specific Implementation Notes will present a problem.
Therefore:
code :
// The lambda will execute within the context of my_strand.
boost::asio::spawn(my_strand,
  [socket&](boost::asio::yield_context yield)
  {
    // In my_strand.
    // ...

    // The socket.async_read_some() operations that composed async_read()
    // will run within the context of my_strand.
    async_read(socket, ..., yield);

    // Still within my_strand.
    socket.close();
  });
// The lambda will execute within the context of my_strand.
boost::asio::spawn(my_strand,
  [socket&](boost::asio::yield_context yield)
  {
    // In my_strand.
    // ...

    // The socket_.async_read_some() operations that composed async_read()
    // will run within the context of my_strand.
    async_read(socket, ..., yield);
  });

my_strand.dispatch([socket&](){ socket.close(); });
Is AF_UNIX socket send thread safe?

Is AF_UNIX socket send thread safe?


By : Benny Grasphy
Date : March 29 2020, 07:55 AM
With these it helps POSIX specifies that all functions it defines must be thread-safe, except those on a list of specific exceptions. The send(2) function is defined by POSIX and is not included on the list of exceptions. Inasmuch as the Linux implementation of send(2) purports to conform to POSIX specifications, you can rely on it to be thread-safe.
Related Posts Related Posts :
  • `LoadLibraryExW` triggers exception `0xC0000023` from `NtMapViewOfSection`
  • static_cast to a struct type to access all of its member variable
  • Forward declaration for boost::intrusive_ptr class to reduce compile time
  • How to use priority_queue with a non-static compare method of class instance?
  • Template parameters inside and outside class/struct
  • Determining prime number
  • How to resolve ambiguity between constructors taking std::string and std::vector
  • My program crashes when I try to change private values from an object
  • Unordered_map with custom class as key
  • Strict aliasing rules broken with templates and inheritance
  • C++ Derived Class Override Return Type
  • singly linked list c++ constructor, destructor and printing out
  • How to clone class with vector of unique_ptr to base class
  • error: no match for operator
  • std::vector doesnt accept my struct as template
  • selection of people's contours
  • how to fix the (Error using mexOpenCV) on matlab?
  • Is or was there a proposal for c++ to use the context for short enum values?
  • Fair assumptions about std::hash implementations
  • undefined reference to libusb using cyusb
  • Function returns null pointer instead of address
  • C++17 copy elision and object destruction
  • Input multiple strings via operator>> c++
  • Avoiding overflow boost container
  • How to Write a Lambda Wrapping a Function with Optional Return Value
  • Partial specialization with more template parameters
  • How to convert fixed size array to pointer on pointer array
  • Memory leak in const member constructor with tag dispatching
  • C++ function with a generic and optional class
  • Custom QGraphicsItem That Contains Child QGraphicsItems
  • Are There Restrictions on What can be Passed to auto Template Parameters?
  • Rotating line inside rectangle bounds
  • Why do I need dynamic memory allocation if I can just create an array?
  • How can I convert a text file into a form that MPI_Bcast can send?
  • How to get array of all `this` of an instance
  • Using pointers as parameters
  • Automatic type deduction with const_cast is not working
  • Why does std::is_rvalue_reference not do what it is advertised to do?
  • Function Template Specialization with Forward Declared Type
  • template deduction failed in vector
  • Is there a signed `sizeof` alternative in Qt
  • clarification on overloading the -> operator
  • What is __m128d?
  • QtConcurrent: why releaseThread and reserveThread cause deadlock?
  • Function receiving different value than passed
  • Can C++ close a '''fstream''' variable after '''.close()'''?
  • Is it necessary to overload operator in this specific case
  • Comparing an element of a string array with a string
  • how to dereference a pointer of a map of pointers to objects in c++
  • How recursive function control flow change for static variable?
  • SDL 2 blitting BMP File
  • Why does an extremely large value cause this code to repeat infinitely?
  • Function returning different value than what is in function body before return statement
  • Struggling with including Headers in another header file (C++)
  • WebViewProcessControl initialization crash
  • C++ exception 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x00C02F30)
  • What's difference between forward and move in the constructor of class?
  • C++: Is it possible to condense `bool` objects within the same byte?
  • I cant understand this access modifier
  • Boost Spirit X3: Collapsing one-element lists
  • shadow
    Privacy Policy - Terms - Contact Us © bighow.org