Threading I2C


I am having problems running I2C in a lower level thread.
I have set up my code to use mutex’s so that the app is the only way to drive the I2C.
Is the I2C a hardware peripheral? ie can I send info to it and forget about it or does stepping in and out of the I2C thread screw up the low level timing on the bus?
What I am seeing is that SDA goes low and stays low effectively killing the bus??
Can I2C be threaded?