Вы можете использовать операторы AND или OR, в зависимости от того, что вы хотите, чтобы поиск возвращал.
SELECT title FROM pages WHERE my_col LIKE %$param1% AND another_col LIKE %$param2%;
Оба условия должны совпадать, чтобы запись была возвращена. В качестве альтернативы:
SELECT title FROM pages WHERE my_col LIKE %$param1% OR another_col LIKE %$param2%;
Если какое-либо предложение совпадает, запись будет возвращена.
Для получения дополнительной информации о том, что вы можете делать с запросами MySQL SELECT, попробуйте документацию .
Вы можете использовать несколько хороших инструментов для проверки всех проблем с потоками, таких как скачки данных, взаимоблокировки, остановка потоков и т. Д. Intel-thread-checker - один из таких хороших инструментов.
Вы также можете попробовать, ШАХМАТЫ от Microsoft Research
Попробуйте увеличить количество потоков до большого, если возможно, даже сверх того, сколько потоков будет использовано в выпуске. При большом количестве потоков, выполняющих вашу программу, ошибка будет появляться чаще, так как больше потоков работает над кодом.
Дважды проверьте свои объявления, блокировки, разблокировки, счетчики семафоров и т. Д. И убедитесь, что они имеют смысл.
Create тестовый документ или электронную таблицу и, используя свои знания кода, подумайте о том, где могут возникнуть возможные состояния гонки или тупиковые ситуации.
Возьмите несколько человек из холла и проведите «тест на удобство использования в коридоре» (Джоэл из Software сказал, что я думаю ?). Как правило, люди, не имеющие представления о том, что делает / о чем ваша программа, смогут легко ее взломать.
Хороший вопрос. Я обычно проверяю условия гонки, порождая много потоков и позволяя им безумно выполнять операции, которые, как я подозреваю, могут быть связаны с условиями гонки.
Может быть, вы можете посмотреть PNUnit - хотя, вероятно, он немного отличается от того, что вы ищете. Авторы говорят, что построили это потому, что «нам нужно было смоделировать сотни клиентов на одном сервере».
код grep для вызовов подпрограмм многопоточности. Если таковые обнаружены, провалите тест, так как ваш код содержит ошибки многопоточности.
Если он прошел, расширьте поиск до тех частей библиотек, которые вы используете, до тех пор, пока он не выйдет из строя или (что маловероятно) окажется поточно-ориентированным (т. Е. однопоточный).
Как только вы узнаете, что у вас есть ошибки потоковой передачи, часть работы по тестированию завершена. Остается только найти и удалить их ...