This passage from the reference manual may be of interest:
If a table doesn't have free blocks in the middle of the data file, you can INSERT new rows into it at the same time that other threads are reading from the table. (These are known as concurrent inserts.) A free block can occur as a result of deleting rows or an update of a dynamic length row with more data than its current contents. When all free blocks are used up (filled in), future inserts become concurrent again.
Source:
http://dev.mysql.com/doc/mysql/en/MyISAM_storage_engine.html
So, if you can keep the table from having holes, you should get concurrent reads/writes. And every write locks the table, even if another write would not overlap. You may want to try InnoDB for row-level locking.
Mike Hillyer, Technical Writer
MySQL AB, www.mysql.com
Office: +1 403-380-6535
Blog:
http://www.openwin.org/mike
"The Open Source movement has become a major force across the software industry, and MySQL is the world's most popular open source database."
--Fortune Magazine