Hi,

 in short: Network processes can take a long time (high traffic, 14.4k modems, 
...). If you are using a synchronous call on the main thread, your application 
will be completely blocked from doing anything else. The CPU will sit there 
idle, not doing anything until the transfer has finished. Since the operating 
system processes events on the main thread, the user will not be able to quit 
your application, click a "Cancel" button or do anything else.

 Now imagine you're loading images into a table on an iPhone. The user is 
scrolling through the list. Whenever a new item in the table is exposed, you go 
out to the network, request that image, blocking the main thread (and pausing 
the user's scrolling). At home, as the developer, you don't notice. The server 
is sitting right next to you. But a user at the edge of cell phone reception or 
in a moving train will find it impossible to scroll because essentially he's 
exposing one item, waiting, exposing the next item, waiting...

 You could solve this problem by using synchronous API on a separate thread, 
but threading is hard. That's where async API comes in. In many cases (e.g. 
NSURLConnection) these APIs create a new thread, that does all the synchronous 
download calls for you, and then notifies the main thread when it's done. You 
don't need to use locks, or semaphores, or do the threading yourself. Other 
async calls work by splitting their work into small bits, adding them to a 
queue, and then periodically (but on the main thread) performing a tiny 
fraction of the work by executing the next tiny fraction of a task from the 
queue. In between these tiny operations, the user can keep working, and barely 
notices the tiny interruptions.

Cheers,
-- Uli Kusterer
"The Witnesses of TeachText are everywhere..."
http://www.zathras.de

On Feb 22, 2013, at 11:13 AM, Dave <d...@looktowindward.com> wrote:

> Hi All,
> 
> I was reading an article about Server/Client communications using a Rest 
> service and the author seemed to have a downer on using the Sync (as opposed 
> to ASync) methods of making a request and receiving a reply. Also I've 
> noticed it being generally discouraged in quite a few other places when I was 
> searching for 3rd Party Network Libraries. However, I can't find any reason 
> behind it? Does anyone have any idea why ASync transactions are better than 
> Sync transactions? Or is it just Sync'ism? lol
> 
> Have a Good Weekend!
> 
> Thanks
> Dave
> 
> _______________________________________________
> 
> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)
> 
> 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:
> https://lists.apple.com/mailman/options/cocoa-dev/witness.of.teachtext%40gmx.net
> 
> This email sent to witness.of.teacht...@gmx.net


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to