TweetFollow Us on Twitter

Jan 01 Online Volume Number: 17 (2001)
Issue Number: 1
Column Tag: MacTech Online

MacTech Online

by Jeff Clites <online@mactech.com>

In our previous column we began coverage of a set of technologies that I'm calling the "New Basics," in recognition that "the things that every programmer should know" are changing, and as they change we're converging on a set which is the same for all programmers-there are no longer different sets for different platforms. This is in part because the fundamental, low-level differences between operating systems are shrinking, and in part because the focus is shifting toward technologies which are new to all platforms, and which are being embraced by all platforms as they emerge. We also noted that this is leading to a sort of impromptu cooperation, and companies like IBM which used to be archetypal bad guy are now great sources of information for Macintosh programmers who are new to the Unix side of computing. Our first New Basic was XML, which is the most-hyped technology of the day, and is likely to dominate information interchange for some time to come. This month we are going to take a look at threading-both how it will be conceptually different under Mac OS X than under Mac OS 9, and how it will be more important there as well.

Preemptive Threading

Most Macintosh developers will be accustomed to a "cooperative" environment, where an application has exclusive use of the processor (and other system resources) until it explicitly yields control to other waiting processes. Threading under Mac OS 9 is also typically cooperatively scheduled, so that threads within a single application have to explicitly yield for other threads to proceed. This type of scheduling simplifies certain issues surrounding concurrent access to memory and system resources, but it can be difficult for a developer to know how often, and when, to yield the processor in order to provide the best overall system performance. Also, the majority of the Toolbox is not thread safe, so that you have to be very careful about the types of operations you perform outside of the main thread. As a result, under Mac OS 9 applications tend to be single-threaded if at all possible.

Under Mac OS X, as under other Unix-based operating systems, both processes and threads are scheduled preemptively, so that the kernel makes all scheduling decisions and a thread or process can be interrupted at any time. From the point of view of a programmer, this means that you can never be sure that two operations within your application will take place without another process interrupting. The benefit of this approach is that you never has to explicitly code time-consuming sections of your application to yield the processor in order to prevent freezing the user's system for long periods, and you can perform blocking I/O operations in a thread and know that other threads and processes will happily proceed while yours is waiting for data to be read transferred. This simplifies many uses of threads, but introduces complications of its own: you have to guard critical sections of code and data from concurrent access if they are going to be used by multiple threads (even reading data from a variable cannot be assumed to be an atomic operation), and you can't assume that the state of the system has not changed from one line of code to the next (for instance, it isn't reliable to check for the existence of a file and then try to open it as a separate step, because the file could be deleted in between the two operations, even if they occur back-to-back within your program). Preemptive scheduling requires a certain paranoia on the part of the programmer, but it leads to an overall more responsive and reliable system, and it allows simple applications to be written simply, without worrying that they might accidentally hijack the processor. And of course, threading makes it possible for a single application to take advantage of multiple processors on systems which have them, and in fact on such systems two threads within a single application can be executing at literally the same time.

POSIX Threads

The fundamental threading library under Mac OS X is POSIX Threads, or Pthreads for short. This will be new to veteran OpenStep programmers as well as to classic Macintosh programmers, as Mac OS X Server and previous NeXT-derived operating systems used a different threading library, called Cthreads. The big benefit of Pthreads is that applications using them should be portable to other POSIX-compliant operating systems (if the rest of the code is portable, of course), and this will make it that much easier to bring standard Unix tools and applications over to the Macintosh. For most applications it won't be necessary to use the Pthreads library directly, as Cocoa has its own threading facilities which provide a higher-level view and insulate the programmer from the details of the underlying threading library. Even so, the conceptual model remains the same, and Macintosh programmers which are new to preemptive threading will benefit from the wealth of information there is available on POSIX threading. Also, if you plan to develop (or port) more traditional Unix-style applications you will need to know about the lower-level libraries in more detail.

A good starting point is the article How to program with threads on SunWorld Online, which talks about programming with threads in general, and the advantages that they offer. Next, IBM's developerWorks site has a series of articles which cover POSIX threads specifically. Like many of their articles, these are written with a Linux audience in mind, but most of the information is nevertheless relevant, as POSIX is explicitly cross platform. These articles will give you a good feel for the issues involved, and point out the potential complexities of using threads.

After you've gotten a handle on the major concepts, you'll want to find more in-depth coverage of the details of using Pthreads. There are several online tutorials which can help. In particular, Getting Started With POSIX Threads is a brief tutorial which will help solidify some key points, and then you can move on to more comprehensive coverage in Multi-Threaded Programming With POSIX Threads and POSIX Threads Programming, both of which are quite thorough.

If you are curious about other issues surrounding threading, you should check the comp.programming.threads FAQ. Also, if you are interested in the different possible strategies for actually implement a threading library, the Navy has an article which covers the strengths and weaknesses of three different approaches. Finally, you may want to visit the Programming POSIX Threads web site, which has pointers to further information.

There are several books about Pthreads, and I always find it helpful to have a detailed printed reference to augment all of the web-based information. Programming with POSIX Threads by David R. Butenhof (ISBN: 0-201-63392-2) is my favorite and is often recommended by others, but there are several alternatives available, including Pthreads Programming (ISBN: 1-56592-115-1) and Multithreaded Programming With Pthreads (ISBN: 0136807291). Take a look and see which one suites you the best.

Now you should be up to speed on basic number two. Keep your eye on this column in coming months, because we're not done with the New Basics yet!

 
AAPL
$102.50
Apple Inc.
+0.25
MSFT
$45.43
Microsoft Corpora
+0.55
GOOG
$571.60
Google Inc.
+2.40

MacTech Search:
Community Search:

Software Updates via MacUpdate

VueScan 9.4.41 - Scanner software with a...
VueScan is a scanning program that works with most high-quality flatbed and film scanners to produce scans that have excellent color fidelity and color balance. VueScan is easy to use, and has... Read more
Cloud 3.0.0 - File sharing from your men...
Cloud is simple file sharing for the Mac. Drag a file from your Mac to the CloudApp icon in the menubar and we take care of the rest. A link to the file will automatically be copied to your clipboard... Read more
LibreOffice 4.3.1.2 - Free Open Source o...
LibreOffice is an office suite (word processor, spreadsheet, presentations, drawing tool) compatible with other major office suites. The Document Foundation is coordinating development and... Read more
SlingPlayer Plugin 3.3.20.505 - Browser...
SlingPlayer is the screen interface software that works hand-in-hand with the hardware inside the Slingbox to make your TV viewing experience just like that at home. It features an array of... Read more
Get Lyrical 3.8 - Auto-magically adds ly...
Get Lyrical auto-magically add lyrics to songs in iTunes. You can choose either a selection of tracks, or the current track. Or turn on "Active Tagging" to get lyrics for songs as you play them.... Read more
Viber 4.2.2 - Send messages and make cal...
Viber lets you send free messages and make free calls to other Viber users, on any device and network, in any country! Viber syncs your contacts, messages and call history with your mobile device,... Read more
Cocktail 7.6 - General maintenance and o...
Cocktail is a general purpose utility for OS X that lets you clean, repair and optimize your Mac. It is a powerful digital toolset that helps hundreds of thousands of Mac users around the world get... Read more
LaunchBar 6.1 - Powerful file/URL/email...
LaunchBar is an award-winning productivity utility that offers an amazingly intuitive and efficient way to search and access any kind of information stored on your computer or on the Web. It provides... Read more
Maya 2015 - Professional 3D modeling and...
Maya is an award-winning software and powerful, integrated 3D modeling, animation, visual effects, and rendering solution. Because Maya is based on an open architecture, all your work can be scripted... Read more
BBEdit 10.5.12 - Powerful text and HTML...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more

Latest Forum Discussions

See All

Rhonna Designs Magic (Photography)
Rhonna Designs Magic 1.0 Device: iOS Universal Category: Photography Price: $1.99, Version: 1.0 (iTunes) Description: Want to sprinkle *magic* on your photos? With RD Magic, you can add colors, filters, light leaks, bokeh, edges,... | Read more »
This Week at 148Apps: August 25-29, 2014
Shiny Happy App Reviews   | Read more »
Qube Kingdom – Tips, Tricks, Strategies,...
Qube Kingdom is a tower defense game from DeNA. You rally your troops – magicians, archers, knights, barbarians, and others – and fight against an evil menace looking to dominate your kingdom of tiny squares. Planning a war isn’t easy, so here are a... | Read more »
Qube Kingdom Review
Qube Kingdom Review By Nadia Oxford on August 29th, 2014 Our Rating: :: KIND OF A SQUARE KINGDOMUniversal App - Designed for iPhone and iPad Qube Kingdom has cute visuals, but it’s a pretty basic tower defense game at heart.   | Read more »
Fire in the Hole Review
Fire in the Hole Review By Rob Thomas on August 29th, 2014 Our Rating: :: WALK THE PLANKUniversal App - Designed for iPhone and iPad Seafoam’s Fire in the Hole looks like a bright, 8-bit throwback, but there’s not enough booty to... | Read more »
Alien Creeps TD is Now Available Worldwi...
Alien Creeps TD is Now Available Worldwide Posted by Ellis Spice on August 29th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Dodo Master Review
Dodo Master Review By Jordan Minor on August 29th, 2014 Our Rating: :: NEST EGGiPad Only App - Designed for the iPad Dodo Master is tough but fair, and that’s what makes it a joy to play.   | Read more »
Motorsport Manager Review
Motorsport Manager Review By Lee Hamlet on August 29th, 2014 Our Rating: :: MARVELOUS MANAGEMENTUniversal App - Designed for iPhone and iPad Despite its depth and sense of tactical freedom, Motorsport Manager is one of the most... | Read more »
Motorsport Manager – Beginner Tips, Tric...
The world of Motorsport management can be an unforgiving and merciless one, so to help with some of the stress that comes with running a successful race team, here are a few hints and tips to leave your opponents in the dust. | Read more »
CalPal Update Brings the App to 2.0, Add...
CalPal Update Brings the App to 2.0, Adds Lots of New Stuff Posted by Ellis Spice on August 29th, 2014 [ permalink ] | Read more »

Price Scanner via MacPrices.net

The Rise of Phablets
Carlisle & Gallagher Consulting Group, a businesses and technology consulting firm focused solely on the financial services industry, has released an infographic depicting the convergence of... Read more
Eddy – Cloud Music Player for iPhone/iPad Fre...
Ukraine based CapableBits announces the release of Eddy, its tiny, but smart and powerful cloud music player for iPhone and iPad that allows users to stream or download music directly from cloud... Read more
A&D Medical Launches Its WellnessConnecte...
For consumers and the healthcare providers and loved ones who care for them, A&D Medical, a leader in connected health and biometric measurement devices and services, has launched its... Read more
Anand Lal Shimpi Retires From AnandTech
Anand Lal Shimpi, whose AnandTech Website is famous for its meticulously detailed and thoroughgoing reviews and analysis, is packing it in. Lal Shimpi, who founded the tech site at age 14 in 1997,... Read more
2.5GHz Mac mini, Apple refurbished, in stock...
The Apple Store has Apple Certified Refurbished 2.5GHz Mac minis available for $509, $90 off MSRP. Apple’s one-year warranty is included, and shipping is free. Read more
13-inch 2.5GHz MacBook Pro on sale for $999,...
B&H Photo has the 13″ 2.5GHz MacBook Pro on sale for $999.99 including free shipping plus NY sales tax only. Their price is $100 off MSRP. Read more
Labor Day Weekend MacBook Pro sale; 15-inch m...
B&H Photo has the new 2014 15″ Retina MacBook Pros on sale for up to $125 off MSRP. Shipping is free, and B&H charges NY sales tax only. They’ll also include free copies of Parallels Desktop... Read more
Labor Day Weekend iPad mini sale; $50 to $100...
Best Buy has the iPad mini with Retina Display (WiFi models) on sale for $50 off MSRP on their online store for Labor Day Weekend. Choose free shipping or free local store pick up. Price is for... Read more
13-inch 1.4GHz MacBook Air on sale for $899,...
Adorama has the new 2014 13″ 1.4GHz/128GB MacBook Air on sale for $899.99 including free shipping plus NY & NJ tax only. Their price is $100 off MSRP. Read more
It’s Official: Apple Issues Invitations To Se...
Apple has issued one of its characteristically cryptic press invitations for a special event to be held at the Flint Center for the Performing Arts in hometown Cupertino on Sept. 9, 2014 at 10:00 am... Read more

Jobs Board

*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
Senior Event Manager, *Apple* Retail Market...
…This senior level position is responsible for leading and imagining the Apple Retail Team's global event strategy. Delivering an overarching brand story; in-store, Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.