GithubHelp home page GithubHelp logo

Comments (3)

deckarep avatar deckarep commented on June 6, 2024

Hello,

Do you have a proposal or example in mind?

Currently threadsafety is an internally managed and you have to choose what you need upfront during instantiation. Both safe and non-safe implement the same Set interface because they are fundamentally the same thing.

This is a decision that is made during the writing of code. So far this works well so long as the programmer understands what they are picking and why they want one over the other.

Maybe an example will help me grasp the issue or even better a proposal?

from golang-set.

IceflowRE avatar IceflowRE commented on June 6, 2024

TLDR: I think you might be right, it is up to the developer that he understand what to pick and to pass along. And that if a thread safe type is required to pass the correct thing. Especially if an interface is accepted.


Currently threadsafety is an internally managed and you have to choose what you need upfront during instantiation. Both safe and non-safe implement the same Set interface because they are fundamentally the same thing

This is the problem i had while thinking about a solution. An interface for each would be implemented by both.

This is a decision that is made during the writing of code. So far this works well so long as the programmer understands what they are picking and why they want one over the other.

The problem is if you expose the interface (mapset.Set) in a library and you have to trust the caller that he is passing a thread safe set, could be painful to debug and prevented beforehand.

My ideas so far.

  1. Expose the threadsafe and threadunsafe structs, so it is possible to check which is used.
    • This is not useful if someone implements an own set.
  2. Add a isThreadSafe() bool to the set interface.
    • will break compatibility
    • imho the main set interface should be free of implementation details
  3. Add a ThreadSafeSet interface which has another dummy method like to be distinguishable from the ThreadUnsafeSet which has another dummy method

In my eyes all ideas are not optimal.

Feel free to close this issue.

from golang-set.

deckarep avatar deckarep commented on June 6, 2024

Ok,

Iā€™m going to close the issue and thank you for the response!

from golang-set.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.