Multiple Software Serials

I have a GPS, GPRS shield and an UNO. What is the proper way to write code for multiple software serial connections? I've read on here that a handshake needs to be involved since they cannot both receive data at the same time. If so, what would that code look like?

I plan to add another serial connection later for even more data. Would it be better to go with a different Arduino to handle all these serial connections? If so, which one?

Thanks in advance for any advice you can give me.

Use hardware serial for one and software serial for the other.

As these devices have different communication protocols I'd write little routines like getGPSData(), getGPRSdata() and each can handle the interfacing to those modules etc. I would certainly not push it all into the loop making it very confusing. In your main loop you can then walk down the list of serial interfaces and deal with them accordingly. This is assuming that each device can be requested to send data and not just keep sending data automatically because that will be lost.

The Mega2560 has 4 hardware serial ports. I have one set up here with 2 x FTDI boards added and a BT module, plus the usual USB connection for power, sketch uploading, etc. Works well, and you don't have to mess about with listen(), etc, as you do with Software Serial. Plus there's lots of memory, etc. Highly recommended :D