• 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: Progress Indicators Spin vs Bar
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Progress Indicators Spin vs Bar


  • Subject: Re: Progress Indicators Spin vs Bar
  • From: Conrad Shultz <email@hidden>
  • Date: Mon, 20 Jun 2011 20:57:56 -0700

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 6/20/11 8:43 PM, James Merkel wrote:

> First of all (kind of basic) what is GCD ?

Sorry, I shouldn't just throw acronyms around.  GCD stands for "Grand
Central Dispatch" - Apple's newest technology for concurrent
programming.  It has a relatively high-level API that wraps the whole
threading interface so you don't have to think about it.

Details are available at
http://developer.apple.com/library/mac/#documentation/Performance/Reference/GCD_libdispatch_Ref/Reference/reference.html
but you probably want to start with the Concurrency Programming Guide
(http://developer.apple.com/library/mac/#documentation/General/Conceptual/ConcurrencyProgrammingGuide/Introduction/Introduction.html)
for a gentler introduction.

> I have actually implemented this a couple of different ways (not using
> threads).
> At first I just had lazy loading of the TableView. Whenever the
> TableView needed something a file was accessed and a thumbnail
> extracted. Then I changed it to do preprocessing. That is, everything
> was extracted from the files  and then the TableView was allowed to
> load. The first approach uses less memory but is slower in updating the
> TableView (when it is scrolled for example). The second approach uses
> more memory but is faster in updating (provides a better user
> experience). I think trying to do this in a separate thread would be
> much cleaner using the second approach.

That you have already implemented these approaches should simplify the
transition to a multithreaded app.  The code that you have been
extracting during your experimentation should hopefully map pretty well
onto my imaginary -exifData and -thumbnail methods; note that my code
did not make any changes to the mechanics of HOW the thumbnails are
extracted/generated, instead just changing WHEN (and where) the
generation occurs.

You could really use either approach you gave above.  My pseudocode in
the previous message probably is more in line with the second approach,
but you could trivially use the first as well.

In either case, one little trick is that you will want to have a static
placeholder thumbnail at the ready that your table can display until
such time that the threaded code has the actual thumbnail finished.

> I forgot to mention the really slow case: if a thumbnail can't be found
> in the file, then I make a thumbnail from the main image. If this has to
> be done on a lot of files, then things really bog down.

But if the thumbnailing is on a second thread, this won't matter... just
have the threaded code make the thumbnail.  It's like magic, but better. :-)

Give the concurrency programming guide a once-over and post back with
follow-up questions; I think you will find that what you are trying to
do is not as tough as it appears.

- --
Conrad Shultz

Synthetiq Solutions
www.synthetiqsolutions.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (Darwin)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iD8DBQFOABbEaOlrz5+0JdURAhhWAJ9gakekUwXm8VyEC3zo5yXKeR47yACfVPZR
JF4mJBazIwwz6S3ROgFMopI=
=7QXU
-----END PGP SIGNATURE-----
_______________________________________________

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: 
 >Progress Indicators Spin vs Bar (From: James Merkel <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: Quincey Morris <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: James Merkel <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: James Merkel <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: Kyle Sluder <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: James Merkel <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: Mike Abdullah <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: James Merkel <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: Greg Parker <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: James Merkel <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: Conrad Shultz <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: James Merkel <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: Conrad Shultz <email@hidden>)
 >Re: Progress Indicators Spin vs Bar (From: James Merkel <email@hidden>)

  • Prev by Date: Re: Progress Indicators Spin vs Bar
  • Next by Date: Re: Progress Indicators Spin vs Bar
  • Previous by thread: Re: Progress Indicators Spin vs Bar
  • Next by thread: Re: Progress Indicators Spin vs Bar
  • Index(es):
    • Date
    • Thread