Is ArrayPool.Rent(Int32) Method thread-safe?












6














I just found out about ArrayPool existence, but it's documentation is somewhat lacking.



I'd like to know if Rent(.) and Return(.) are thread-safe.



Edit: looks like I didn't notice the "Thread Safety" part of documentation; but reading some of the comments and answers I was relieved I wasn't the only one that didn't.










share|improve this question





























    6














    I just found out about ArrayPool existence, but it's documentation is somewhat lacking.



    I'd like to know if Rent(.) and Return(.) are thread-safe.



    Edit: looks like I didn't notice the "Thread Safety" part of documentation; but reading some of the comments and answers I was relieved I wasn't the only one that didn't.










    share|improve this question



























      6












      6








      6







      I just found out about ArrayPool existence, but it's documentation is somewhat lacking.



      I'd like to know if Rent(.) and Return(.) are thread-safe.



      Edit: looks like I didn't notice the "Thread Safety" part of documentation; but reading some of the comments and answers I was relieved I wasn't the only one that didn't.










      share|improve this question















      I just found out about ArrayPool existence, but it's documentation is somewhat lacking.



      I'd like to know if Rent(.) and Return(.) are thread-safe.



      Edit: looks like I didn't notice the "Thread Safety" part of documentation; but reading some of the comments and answers I was relieved I wasn't the only one that didn't.







      c# .net-core thread-safety






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 13 '18 at 4:55







      Trauer

















      asked Nov 13 '18 at 3:15









      TrauerTrauer

      9901822




      9901822
























          2 Answers
          2






          active

          oldest

          votes


















          5














          Update Comment from ta.speot.is




          It literally says on
          Thread safety This
          class is thread-safe. All members may be used by multiple threads
          concurrently




          Original



          It doesn't say it on docs.microsoft.com, however there is a few references to the fact it is



          Add a new System.Buffers namespace to the BCL for Resource Pooling




          The Pool will be lightweight and thread-safe, allowing for fast Rent
          and Return calls from any thread within the process, along with
          minimal locking overhead, and 0 heap allocations on most Rent calls
          (exceptions to this will be called out below in the description of the
          Rent function).




          Pooling large arrays with ArrayPool




          Recommended: use the ArrayPool.Shared property, which returns a
          shared pool instance. It’s thread safe and all you need to remember is
          that it has a default max array length, equal to 2^20 (1024*1024 = 1
          048 576).




          .






          share|improve this answer



















          • 1




            It doesn't say it on docs.microsoft.com It literally says on docs.microsoft.com/en-us/dotnet/api/system.buffers.arraypool-1 This class is thread-safe. All members may be used by multiple threads concurrently.
            – ta.speot.is
            Nov 13 '18 at 3:31










          • @ta.speot.is ahh so it does
            – TheGeneral
            Nov 13 '18 at 3:32






          • 1




            @ta.speot.is updated and attributed
            – TheGeneral
            Nov 13 '18 at 3:34



















          1















          it's documentation is somewhat lacking.




          You can read about thread safety under Thread Safety:




          Thread Safety



          This class is thread-safe. All members may be used by multiple threads concurrently.







          share|improve this answer





















            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53273277%2fis-arraypoolt-rentint32-method-thread-safe%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            2 Answers
            2






            active

            oldest

            votes








            2 Answers
            2






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            5














            Update Comment from ta.speot.is




            It literally says on
            Thread safety This
            class is thread-safe. All members may be used by multiple threads
            concurrently




            Original



            It doesn't say it on docs.microsoft.com, however there is a few references to the fact it is



            Add a new System.Buffers namespace to the BCL for Resource Pooling




            The Pool will be lightweight and thread-safe, allowing for fast Rent
            and Return calls from any thread within the process, along with
            minimal locking overhead, and 0 heap allocations on most Rent calls
            (exceptions to this will be called out below in the description of the
            Rent function).




            Pooling large arrays with ArrayPool




            Recommended: use the ArrayPool.Shared property, which returns a
            shared pool instance. It’s thread safe and all you need to remember is
            that it has a default max array length, equal to 2^20 (1024*1024 = 1
            048 576).




            .






            share|improve this answer



















            • 1




              It doesn't say it on docs.microsoft.com It literally says on docs.microsoft.com/en-us/dotnet/api/system.buffers.arraypool-1 This class is thread-safe. All members may be used by multiple threads concurrently.
              – ta.speot.is
              Nov 13 '18 at 3:31










            • @ta.speot.is ahh so it does
              – TheGeneral
              Nov 13 '18 at 3:32






            • 1




              @ta.speot.is updated and attributed
              – TheGeneral
              Nov 13 '18 at 3:34
















            5














            Update Comment from ta.speot.is




            It literally says on
            Thread safety This
            class is thread-safe. All members may be used by multiple threads
            concurrently




            Original



            It doesn't say it on docs.microsoft.com, however there is a few references to the fact it is



            Add a new System.Buffers namespace to the BCL for Resource Pooling




            The Pool will be lightweight and thread-safe, allowing for fast Rent
            and Return calls from any thread within the process, along with
            minimal locking overhead, and 0 heap allocations on most Rent calls
            (exceptions to this will be called out below in the description of the
            Rent function).




            Pooling large arrays with ArrayPool




            Recommended: use the ArrayPool.Shared property, which returns a
            shared pool instance. It’s thread safe and all you need to remember is
            that it has a default max array length, equal to 2^20 (1024*1024 = 1
            048 576).




            .






            share|improve this answer



















            • 1




              It doesn't say it on docs.microsoft.com It literally says on docs.microsoft.com/en-us/dotnet/api/system.buffers.arraypool-1 This class is thread-safe. All members may be used by multiple threads concurrently.
              – ta.speot.is
              Nov 13 '18 at 3:31










            • @ta.speot.is ahh so it does
              – TheGeneral
              Nov 13 '18 at 3:32






            • 1




              @ta.speot.is updated and attributed
              – TheGeneral
              Nov 13 '18 at 3:34














            5












            5








            5






            Update Comment from ta.speot.is




            It literally says on
            Thread safety This
            class is thread-safe. All members may be used by multiple threads
            concurrently




            Original



            It doesn't say it on docs.microsoft.com, however there is a few references to the fact it is



            Add a new System.Buffers namespace to the BCL for Resource Pooling




            The Pool will be lightweight and thread-safe, allowing for fast Rent
            and Return calls from any thread within the process, along with
            minimal locking overhead, and 0 heap allocations on most Rent calls
            (exceptions to this will be called out below in the description of the
            Rent function).




            Pooling large arrays with ArrayPool




            Recommended: use the ArrayPool.Shared property, which returns a
            shared pool instance. It’s thread safe and all you need to remember is
            that it has a default max array length, equal to 2^20 (1024*1024 = 1
            048 576).




            .






            share|improve this answer














            Update Comment from ta.speot.is




            It literally says on
            Thread safety This
            class is thread-safe. All members may be used by multiple threads
            concurrently




            Original



            It doesn't say it on docs.microsoft.com, however there is a few references to the fact it is



            Add a new System.Buffers namespace to the BCL for Resource Pooling




            The Pool will be lightweight and thread-safe, allowing for fast Rent
            and Return calls from any thread within the process, along with
            minimal locking overhead, and 0 heap allocations on most Rent calls
            (exceptions to this will be called out below in the description of the
            Rent function).




            Pooling large arrays with ArrayPool




            Recommended: use the ArrayPool.Shared property, which returns a
            shared pool instance. It’s thread safe and all you need to remember is
            that it has a default max array length, equal to 2^20 (1024*1024 = 1
            048 576).




            .







            share|improve this answer














            share|improve this answer



            share|improve this answer








            edited Nov 13 '18 at 3:33

























            answered Nov 13 '18 at 3:28









            TheGeneralTheGeneral

            28k63365




            28k63365








            • 1




              It doesn't say it on docs.microsoft.com It literally says on docs.microsoft.com/en-us/dotnet/api/system.buffers.arraypool-1 This class is thread-safe. All members may be used by multiple threads concurrently.
              – ta.speot.is
              Nov 13 '18 at 3:31










            • @ta.speot.is ahh so it does
              – TheGeneral
              Nov 13 '18 at 3:32






            • 1




              @ta.speot.is updated and attributed
              – TheGeneral
              Nov 13 '18 at 3:34














            • 1




              It doesn't say it on docs.microsoft.com It literally says on docs.microsoft.com/en-us/dotnet/api/system.buffers.arraypool-1 This class is thread-safe. All members may be used by multiple threads concurrently.
              – ta.speot.is
              Nov 13 '18 at 3:31










            • @ta.speot.is ahh so it does
              – TheGeneral
              Nov 13 '18 at 3:32






            • 1




              @ta.speot.is updated and attributed
              – TheGeneral
              Nov 13 '18 at 3:34








            1




            1




            It doesn't say it on docs.microsoft.com It literally says on docs.microsoft.com/en-us/dotnet/api/system.buffers.arraypool-1 This class is thread-safe. All members may be used by multiple threads concurrently.
            – ta.speot.is
            Nov 13 '18 at 3:31




            It doesn't say it on docs.microsoft.com It literally says on docs.microsoft.com/en-us/dotnet/api/system.buffers.arraypool-1 This class is thread-safe. All members may be used by multiple threads concurrently.
            – ta.speot.is
            Nov 13 '18 at 3:31












            @ta.speot.is ahh so it does
            – TheGeneral
            Nov 13 '18 at 3:32




            @ta.speot.is ahh so it does
            – TheGeneral
            Nov 13 '18 at 3:32




            1




            1




            @ta.speot.is updated and attributed
            – TheGeneral
            Nov 13 '18 at 3:34




            @ta.speot.is updated and attributed
            – TheGeneral
            Nov 13 '18 at 3:34













            1















            it's documentation is somewhat lacking.




            You can read about thread safety under Thread Safety:




            Thread Safety



            This class is thread-safe. All members may be used by multiple threads concurrently.







            share|improve this answer


























              1















              it's documentation is somewhat lacking.




              You can read about thread safety under Thread Safety:




              Thread Safety



              This class is thread-safe. All members may be used by multiple threads concurrently.







              share|improve this answer
























                1












                1








                1







                it's documentation is somewhat lacking.




                You can read about thread safety under Thread Safety:




                Thread Safety



                This class is thread-safe. All members may be used by multiple threads concurrently.







                share|improve this answer













                it's documentation is somewhat lacking.




                You can read about thread safety under Thread Safety:




                Thread Safety



                This class is thread-safe. All members may be used by multiple threads concurrently.








                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 13 '18 at 3:31









                ta.speot.ista.speot.is

                23.3k75186




                23.3k75186






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.





                    Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                    Please pay close attention to the following guidance:


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53273277%2fis-arraypoolt-rentint32-method-thread-safe%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    這個網誌中的熱門文章

                    Xamarin.form Move up view when keyboard appear

                    Post-Redirect-Get with Spring WebFlux and Thymeleaf

                    Anylogic : not able to use stopDelay()