Уведомляет / уведомляет все снимает удерживаемую блокировку

SELECT * INTO OUTFILE "c:/mydata.csv"
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY "\n"
FROM my_table;

( документация для этого здесь: http://dev.mysql.com/doc/refman/5.0/en/select.html )

или:

$select = "SELECT * FROM table_name";

$export = mysql_query ( $select ) or die ( "Sql error : " . mysql_error( ) );

$fields = mysql_num_fields ( $export );

for ( $i = 0; $i < $fields; $i++ )
{
    $header .= mysql_field_name( $export , $i ) . "\t";
}

while( $row = mysql_fetch_row( $export ) )
{
    $line = '';
    foreach( $row as $value )
    {                                            
        if ( ( !isset( $value ) ) || ( $value == "" ) )
        {
            $value = "\t";
        }
        else
        {
            $value = str_replace( '"' , '""' , $value );
            $value = '"' . $value . '"' . "\t";
        }
        $line .= $value;
    }
    $data .= trim( $line ) . "\n";
}
$data = str_replace( "\r" , "" , $data );

if ( $data == "" )
{
    $data = "\n(0) Records Found!\n";                        
}

header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=your_desired_name.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
24
задан Raedwald 12 March 2016 в 15:12
поделиться

2 ответа

  • wait () говорит вызывающему потоку отказаться от монитора и перейти в спящий режим, пока какой-либо другой поток не войдет в тот же монитор и не вызовет notify ().

  • notify () пробуждает поток, который вызвал wait () для того же объекта.

  • notifyAll () активирует все потоки, вызвавшие wait () для одного и того же объекта. Поток с наивысшим приоритетом будет запущен первым.

15
ответ дан 28 November 2019 в 22:44
поделиться

Вызов метода notify() для объекта освобождает блокировку этого объекта. Но это не похоже на вызов метода wait().

Итак, вот как это делается:

Если поток вызывает метод wait() для объекта, поток НЕМЕДЛЕННО снимает блокировку этого объекта и переходит в состояние ожидания.

Но когда поток вызывает метод notify() для объекта, поток может не снимать блокировку этого объекта немедленно, так как поток может иметь еще какую-то работу. В конце поток будет снимать блокировку объекта при вызове метода notify(), потому что ожидающему потоку потребуется блокировка объекта для продолжения выполнения после того, как он был уведомлен.

-3
ответ дан 28 November 2019 в 22:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: