When you read data, the database puts a share lock on the affected resource (different levels exist). While a share lock exists on that resource, the data cannot be modified by other transactions. Usually (depending on the isolation level) share locks are released when the operation ends.
When a transaction modifies a resource, an exclusive lock is put on that resource and no other transactions can modify it. <b>Read operations could be permitted</b> if the ‘read uncommited’ isolation level is being used (or if the NOLOCK hint is applied to the read).