Async won't compile because of multiple implementations in source










0















I am trying to run the following code but it's not running because the compiler doesn't know which version of the async method to call. How do I tell it which one to call?



v



ar counter=0
val workerA=asyncIncrement(5000)
val workerB=asyncIncrement(100)
workerA.await()
workerB.await()

print("counter = $counter")

fun asyncIncrement(by:Int)=async
for(i in 1..by)
counter++




Just copy and paste the code into a scratch file or wherever and you should see the same compiler error










share|improve this question


























    0















    I am trying to run the following code but it's not running because the compiler doesn't know which version of the async method to call. How do I tell it which one to call?



    v



    ar counter=0
    val workerA=asyncIncrement(5000)
    val workerB=asyncIncrement(100)
    workerA.await()
    workerB.await()

    print("counter = $counter")

    fun asyncIncrement(by:Int)=async
    for(i in 1..by)
    counter++




    Just copy and paste the code into a scratch file or wherever and you should see the same compiler error










    share|improve this question
























      0












      0








      0








      I am trying to run the following code but it's not running because the compiler doesn't know which version of the async method to call. How do I tell it which one to call?



      v



      ar counter=0
      val workerA=asyncIncrement(5000)
      val workerB=asyncIncrement(100)
      workerA.await()
      workerB.await()

      print("counter = $counter")

      fun asyncIncrement(by:Int)=async
      for(i in 1..by)
      counter++




      Just copy and paste the code into a scratch file or wherever and you should see the same compiler error










      share|improve this question














      I am trying to run the following code but it's not running because the compiler doesn't know which version of the async method to call. How do I tell it which one to call?



      v



      ar counter=0
      val workerA=asyncIncrement(5000)
      val workerB=asyncIncrement(100)
      workerA.await()
      workerB.await()

      print("counter = $counter")

      fun asyncIncrement(by:Int)=async
      for(i in 1..by)
      counter++




      Just copy and paste the code into a scratch file or wherever and you should see the same compiler error







      kotlin coroutine kotlinx.coroutines






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 14 '18 at 17:54









      salyelasalyela

      738




      738






















          1 Answer
          1






          active

          oldest

          votes


















          0














          From Kotlin 1.3 you need to call async on a scope. In this example I have chosen
          the GlobalScope. But it doesn't matter which scope you choose, you always have to explicitly import the asyncextension function;



          import kotlinx.coroutines.GlobalScope
          import kotlinx.coroutines.async
          import kotlinx.coroutines.runBlocking
          import java.util.concurrent.atomic.AtomicInteger


          fun main(args: Array<String>)

          val counter=AtomicInteger(0)

          fun asyncIncrement(by:Int)= GlobalScope.async
          for(i in 1..by)
          counter.incrementAndGet()



          val workerA=asyncIncrement(5000)
          val workerB=asyncIncrement(100)
          runBlocking
          workerA.await()
          workerB.await()


          print("counter = $counter")



          BTW:
          I changed the variable counter from int to an AtomicInteger because the two async blocks may run in different threads. And I introduced runBlocking, because await has to run in a suspend function.






          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%2f53306162%2fasync-wont-compile-because-of-multiple-implementations-in-source%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            From Kotlin 1.3 you need to call async on a scope. In this example I have chosen
            the GlobalScope. But it doesn't matter which scope you choose, you always have to explicitly import the asyncextension function;



            import kotlinx.coroutines.GlobalScope
            import kotlinx.coroutines.async
            import kotlinx.coroutines.runBlocking
            import java.util.concurrent.atomic.AtomicInteger


            fun main(args: Array<String>)

            val counter=AtomicInteger(0)

            fun asyncIncrement(by:Int)= GlobalScope.async
            for(i in 1..by)
            counter.incrementAndGet()



            val workerA=asyncIncrement(5000)
            val workerB=asyncIncrement(100)
            runBlocking
            workerA.await()
            workerB.await()


            print("counter = $counter")



            BTW:
            I changed the variable counter from int to an AtomicInteger because the two async blocks may run in different threads. And I introduced runBlocking, because await has to run in a suspend function.






            share|improve this answer





























              0














              From Kotlin 1.3 you need to call async on a scope. In this example I have chosen
              the GlobalScope. But it doesn't matter which scope you choose, you always have to explicitly import the asyncextension function;



              import kotlinx.coroutines.GlobalScope
              import kotlinx.coroutines.async
              import kotlinx.coroutines.runBlocking
              import java.util.concurrent.atomic.AtomicInteger


              fun main(args: Array<String>)

              val counter=AtomicInteger(0)

              fun asyncIncrement(by:Int)= GlobalScope.async
              for(i in 1..by)
              counter.incrementAndGet()



              val workerA=asyncIncrement(5000)
              val workerB=asyncIncrement(100)
              runBlocking
              workerA.await()
              workerB.await()


              print("counter = $counter")



              BTW:
              I changed the variable counter from int to an AtomicInteger because the two async blocks may run in different threads. And I introduced runBlocking, because await has to run in a suspend function.






              share|improve this answer



























                0












                0








                0







                From Kotlin 1.3 you need to call async on a scope. In this example I have chosen
                the GlobalScope. But it doesn't matter which scope you choose, you always have to explicitly import the asyncextension function;



                import kotlinx.coroutines.GlobalScope
                import kotlinx.coroutines.async
                import kotlinx.coroutines.runBlocking
                import java.util.concurrent.atomic.AtomicInteger


                fun main(args: Array<String>)

                val counter=AtomicInteger(0)

                fun asyncIncrement(by:Int)= GlobalScope.async
                for(i in 1..by)
                counter.incrementAndGet()



                val workerA=asyncIncrement(5000)
                val workerB=asyncIncrement(100)
                runBlocking
                workerA.await()
                workerB.await()


                print("counter = $counter")



                BTW:
                I changed the variable counter from int to an AtomicInteger because the two async blocks may run in different threads. And I introduced runBlocking, because await has to run in a suspend function.






                share|improve this answer















                From Kotlin 1.3 you need to call async on a scope. In this example I have chosen
                the GlobalScope. But it doesn't matter which scope you choose, you always have to explicitly import the asyncextension function;



                import kotlinx.coroutines.GlobalScope
                import kotlinx.coroutines.async
                import kotlinx.coroutines.runBlocking
                import java.util.concurrent.atomic.AtomicInteger


                fun main(args: Array<String>)

                val counter=AtomicInteger(0)

                fun asyncIncrement(by:Int)= GlobalScope.async
                for(i in 1..by)
                counter.incrementAndGet()



                val workerA=asyncIncrement(5000)
                val workerB=asyncIncrement(100)
                runBlocking
                workerA.await()
                workerB.await()


                print("counter = $counter")



                BTW:
                I changed the variable counter from int to an AtomicInteger because the two async blocks may run in different threads. And I introduced runBlocking, because await has to run in a suspend function.







                share|improve this answer














                share|improve this answer



                share|improve this answer








                edited Nov 15 '18 at 7:10

























                answered Nov 14 '18 at 20:06









                ReneRene

                2,31128




                2,31128





























                    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.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53306162%2fasync-wont-compile-because-of-multiple-implementations-in-source%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







                    Popular posts from this blog

                    Kleinkühnau

                    Makov (Slowakei)

                    Deutsches Schauspielhaus