• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: How can I get a single threaded network call in ObjC on iOS?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: How can I get a single threaded network call in ObjC on iOS?


  • Subject: Re: How can I get a single threaded network call in ObjC on iOS?
  • From: Daniel Stenmark <email@hidden>
  • Date: Tue, 28 Jun 2016 20:26:47 +0000
  • Thread-topic: How can I get a single threaded network call in ObjC on iOS?

I agree with Gary, but if something about your structure makes that difficult, there’s also a queue suspend/resume approach:

let queue = dispatch_queue_create("", DISPATCH_QUEUE_SERIAL)

dispatch_async(queue) {
    dispatch_suspend(queue)
    myFirstNetworkCall({ (let result) in
        dispatch_resume(queue)
    })
}

dispatch_async(queue) {
    dispatch_suspend(queue)
    mySecondNetworkCall({ (let result) in
        dispatch_resume(queue)
    })
}

Dan

On Jun 28, 2016, at 1:11 PM, Gary L. Wade <email@hidden<mailto:email@hidden>> wrote:

The simplest way to do what you're asking is to not send another request until your completion handler finishes.
--
Gary L. Wade (Sent from my iPhone)
http://www.garywade.com/

On Jun 28, 2016, at 12:52 PM, Jim Adams <email@hidden> wrote:

I have an application that has the requirement that the accesses to the server be single threaded, i.e. the second request cannot go through until the first request has completed. I am using NSURLSession and NSURLSessionDataTask. I have set the Maximum Concurrent Host number in the configuration to 1 but I have seen evidence that there are simultaneous requests going up to my servers.

Actually I don’t think they are truly simultaneous, just that the completion handler doesn’t finish before the next request goes out. Is there a way to make the next request wait until the completion block is exited?

My evidence comes from looking in the server logs. I have 3 servers in AWS behind an ELB. If I am able to get the cookies back from the server before sending the next request then my request will go to the same server that the last request went to. If I don’t wait then then the request goes to a random server. If I watch the logs I can see the requests come in on multiple servers.



_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden


References: 
 >How can I get a single threaded network call in ObjC on iOS? (From: Jim Adams <email@hidden>)
 >Re: How can I get a single threaded network call in ObjC on iOS? (From: "Gary L. Wade" <email@hidden>)

  • Prev by Date: Re: How can I get a single threaded network call in ObjC on iOS?
  • Next by Date: Re: How can I get a single threaded network call in ObjC on iOS?
  • Previous by thread: Re: How can I get a single threaded network call in ObjC on iOS?
  • Next by thread: Re: How can I get a single threaded network call in ObjC on iOS?
  • Index(es):
    • Date
    • Thread